@fedify/fedify 0.11.0-dev.240 → 0.11.0-dev.242

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.
@@ -6047,6 +6047,10 @@ export class Activity extends Object {
6047
6047
  }
6048
6048
  #_2DjTTboo3CNHU2a2JQqUSE2dbv9D = [];
6049
6049
  #_2MH19yxjn1wnHsNfa5n4JBhJzxyc = [];
6050
+ #_3JQCmF2Ww56Ag9EWRYoSZRDNCYtF = [];
6051
+ #_u4QGFbRFcYmPEKGbPv1hpBR9r5G = [];
6052
+ #_25zu2s3VxVujgEKqrDycjE284XQR = [];
6053
+ #_3c5t2x7DYRo2shwTxpkd4kYSS5WQ = [];
6050
6054
  /**
6051
6055
  * Constructs a new instance of Activity with the given values.
6052
6056
  * @param values The values to initialize the instance with.
@@ -6111,6 +6115,110 @@ export class Activity extends Object {
6111
6115
  "Object | URL" + ".");
6112
6116
  }
6113
6117
  }
6118
+ if ("target" in values && values.target != null) {
6119
+ if (values.target instanceof Object || values.target instanceof URL) {
6120
+ // @ts-ignore: type is checked above.
6121
+ this.#_3JQCmF2Ww56Ag9EWRYoSZRDNCYtF = [values.target];
6122
+ }
6123
+ else {
6124
+ throw new TypeError("The target must be of type " +
6125
+ "Object | URL" + ".");
6126
+ }
6127
+ }
6128
+ if ("targets" in values && values.targets != null) {
6129
+ if ("target" in values &&
6130
+ values.target != null) {
6131
+ throw new TypeError("Cannot initialize both target and " +
6132
+ "targets at the same time.");
6133
+ }
6134
+ if (Array.isArray(values.targets) &&
6135
+ values.targets.every((v) => v instanceof Object || v instanceof URL)) {
6136
+ // @ts-ignore: type is checked above.
6137
+ this.#_3JQCmF2Ww56Ag9EWRYoSZRDNCYtF = values.targets;
6138
+ }
6139
+ else {
6140
+ throw new TypeError("The targets must be an array of type " +
6141
+ "Object | URL" + ".");
6142
+ }
6143
+ }
6144
+ if ("result" in values && values.result != null) {
6145
+ if (values.result instanceof Object || values.result instanceof URL) {
6146
+ // @ts-ignore: type is checked above.
6147
+ this.#_u4QGFbRFcYmPEKGbPv1hpBR9r5G = [values.result];
6148
+ }
6149
+ else {
6150
+ throw new TypeError("The result must be of type " +
6151
+ "Object | URL" + ".");
6152
+ }
6153
+ }
6154
+ if ("results" in values && values.results != null) {
6155
+ if ("result" in values &&
6156
+ values.result != null) {
6157
+ throw new TypeError("Cannot initialize both result and " +
6158
+ "results at the same time.");
6159
+ }
6160
+ if (Array.isArray(values.results) &&
6161
+ values.results.every((v) => v instanceof Object || v instanceof URL)) {
6162
+ // @ts-ignore: type is checked above.
6163
+ this.#_u4QGFbRFcYmPEKGbPv1hpBR9r5G = values.results;
6164
+ }
6165
+ else {
6166
+ throw new TypeError("The results must be an array of type " +
6167
+ "Object | URL" + ".");
6168
+ }
6169
+ }
6170
+ if ("origin" in values && values.origin != null) {
6171
+ if (values.origin instanceof Object || values.origin instanceof URL) {
6172
+ // @ts-ignore: type is checked above.
6173
+ this.#_25zu2s3VxVujgEKqrDycjE284XQR = [values.origin];
6174
+ }
6175
+ else {
6176
+ throw new TypeError("The origin must be of type " +
6177
+ "Object | URL" + ".");
6178
+ }
6179
+ }
6180
+ if ("origins" in values && values.origins != null) {
6181
+ if ("origin" in values &&
6182
+ values.origin != null) {
6183
+ throw new TypeError("Cannot initialize both origin and " +
6184
+ "origins at the same time.");
6185
+ }
6186
+ if (Array.isArray(values.origins) &&
6187
+ values.origins.every((v) => v instanceof Object || v instanceof URL)) {
6188
+ // @ts-ignore: type is checked above.
6189
+ this.#_25zu2s3VxVujgEKqrDycjE284XQR = values.origins;
6190
+ }
6191
+ else {
6192
+ throw new TypeError("The origins must be an array of type " +
6193
+ "Object | URL" + ".");
6194
+ }
6195
+ }
6196
+ if ("instrument" in values && values.instrument != null) {
6197
+ if (values.instrument instanceof Object || values.instrument instanceof URL) {
6198
+ // @ts-ignore: type is checked above.
6199
+ this.#_3c5t2x7DYRo2shwTxpkd4kYSS5WQ = [values.instrument];
6200
+ }
6201
+ else {
6202
+ throw new TypeError("The instrument must be of type " +
6203
+ "Object | URL" + ".");
6204
+ }
6205
+ }
6206
+ if ("instruments" in values && values.instruments != null) {
6207
+ if ("instrument" in values &&
6208
+ values.instrument != null) {
6209
+ throw new TypeError("Cannot initialize both instrument and " +
6210
+ "instruments at the same time.");
6211
+ }
6212
+ if (Array.isArray(values.instruments) &&
6213
+ values.instruments.every((v) => v instanceof Object || v instanceof URL)) {
6214
+ // @ts-ignore: type is checked above.
6215
+ this.#_3c5t2x7DYRo2shwTxpkd4kYSS5WQ = values.instruments;
6216
+ }
6217
+ else {
6218
+ throw new TypeError("The instruments must be an array of type " +
6219
+ "Object | URL" + ".");
6220
+ }
6221
+ }
6114
6222
  }
6115
6223
  /**
6116
6224
  * Clones this instance, optionally updating it with the given values.
@@ -6179,6 +6287,114 @@ export class Activity extends Object {
6179
6287
  "Object | URL" + ".");
6180
6288
  }
6181
6289
  }
6290
+ clone.#_3JQCmF2Ww56Ag9EWRYoSZRDNCYtF = this.#_3JQCmF2Ww56Ag9EWRYoSZRDNCYtF;
6291
+ if ("target" in values && values.target != null) {
6292
+ if (values.target instanceof Object || values.target instanceof URL) {
6293
+ // @ts-ignore: type is checked above.
6294
+ clone.#_3JQCmF2Ww56Ag9EWRYoSZRDNCYtF = [values.target];
6295
+ }
6296
+ else {
6297
+ throw new TypeError("The target must be of type " +
6298
+ "Object | URL" + ".");
6299
+ }
6300
+ }
6301
+ if ("targets" in values && values.targets != null) {
6302
+ if ("target" in values &&
6303
+ values.target != null) {
6304
+ throw new TypeError("Cannot update both target and " +
6305
+ "targets at the same time.");
6306
+ }
6307
+ if (Array.isArray(values.targets) &&
6308
+ values.targets.every((v) => v instanceof Object || v instanceof URL)) {
6309
+ // @ts-ignore: type is checked above.
6310
+ clone.#_3JQCmF2Ww56Ag9EWRYoSZRDNCYtF = values.targets;
6311
+ }
6312
+ else {
6313
+ throw new TypeError("The targets must be an array of type " +
6314
+ "Object | URL" + ".");
6315
+ }
6316
+ }
6317
+ clone.#_u4QGFbRFcYmPEKGbPv1hpBR9r5G = this.#_u4QGFbRFcYmPEKGbPv1hpBR9r5G;
6318
+ if ("result" in values && values.result != null) {
6319
+ if (values.result instanceof Object || values.result instanceof URL) {
6320
+ // @ts-ignore: type is checked above.
6321
+ clone.#_u4QGFbRFcYmPEKGbPv1hpBR9r5G = [values.result];
6322
+ }
6323
+ else {
6324
+ throw new TypeError("The result must be of type " +
6325
+ "Object | URL" + ".");
6326
+ }
6327
+ }
6328
+ if ("results" in values && values.results != null) {
6329
+ if ("result" in values &&
6330
+ values.result != null) {
6331
+ throw new TypeError("Cannot update both result and " +
6332
+ "results at the same time.");
6333
+ }
6334
+ if (Array.isArray(values.results) &&
6335
+ values.results.every((v) => v instanceof Object || v instanceof URL)) {
6336
+ // @ts-ignore: type is checked above.
6337
+ clone.#_u4QGFbRFcYmPEKGbPv1hpBR9r5G = values.results;
6338
+ }
6339
+ else {
6340
+ throw new TypeError("The results must be an array of type " +
6341
+ "Object | URL" + ".");
6342
+ }
6343
+ }
6344
+ clone.#_25zu2s3VxVujgEKqrDycjE284XQR = this.#_25zu2s3VxVujgEKqrDycjE284XQR;
6345
+ if ("origin" in values && values.origin != null) {
6346
+ if (values.origin instanceof Object || values.origin instanceof URL) {
6347
+ // @ts-ignore: type is checked above.
6348
+ clone.#_25zu2s3VxVujgEKqrDycjE284XQR = [values.origin];
6349
+ }
6350
+ else {
6351
+ throw new TypeError("The origin must be of type " +
6352
+ "Object | URL" + ".");
6353
+ }
6354
+ }
6355
+ if ("origins" in values && values.origins != null) {
6356
+ if ("origin" in values &&
6357
+ values.origin != null) {
6358
+ throw new TypeError("Cannot update both origin and " +
6359
+ "origins at the same time.");
6360
+ }
6361
+ if (Array.isArray(values.origins) &&
6362
+ values.origins.every((v) => v instanceof Object || v instanceof URL)) {
6363
+ // @ts-ignore: type is checked above.
6364
+ clone.#_25zu2s3VxVujgEKqrDycjE284XQR = values.origins;
6365
+ }
6366
+ else {
6367
+ throw new TypeError("The origins must be an array of type " +
6368
+ "Object | URL" + ".");
6369
+ }
6370
+ }
6371
+ clone.#_3c5t2x7DYRo2shwTxpkd4kYSS5WQ = this.#_3c5t2x7DYRo2shwTxpkd4kYSS5WQ;
6372
+ if ("instrument" in values && values.instrument != null) {
6373
+ if (values.instrument instanceof Object || values.instrument instanceof URL) {
6374
+ // @ts-ignore: type is checked above.
6375
+ clone.#_3c5t2x7DYRo2shwTxpkd4kYSS5WQ = [values.instrument];
6376
+ }
6377
+ else {
6378
+ throw new TypeError("The instrument must be of type " +
6379
+ "Object | URL" + ".");
6380
+ }
6381
+ }
6382
+ if ("instruments" in values && values.instruments != null) {
6383
+ if ("instrument" in values &&
6384
+ values.instrument != null) {
6385
+ throw new TypeError("Cannot update both instrument and " +
6386
+ "instruments at the same time.");
6387
+ }
6388
+ if (Array.isArray(values.instruments) &&
6389
+ values.instruments.every((v) => v instanceof Object || v instanceof URL)) {
6390
+ // @ts-ignore: type is checked above.
6391
+ clone.#_3c5t2x7DYRo2shwTxpkd4kYSS5WQ = values.instruments;
6392
+ }
6393
+ else {
6394
+ throw new TypeError("The instruments must be an array of type " +
6395
+ "Object | URL" + ".");
6396
+ }
6397
+ }
6182
6398
  return clone;
6183
6399
  }
6184
6400
  async #fetchActor(url, options = {}) {
@@ -6383,6 +6599,348 @@ export class Activity extends Object {
6383
6599
  yield v;
6384
6600
  }
6385
6601
  }
6602
+ async #fetchTarget(url, options = {}) {
6603
+ const documentLoader = options.documentLoader ?? this._documentLoader ??
6604
+ fetchDocumentLoader;
6605
+ const contextLoader = options.contextLoader ?? this._contextLoader ??
6606
+ fetchDocumentLoader;
6607
+ let fetchResult;
6608
+ try {
6609
+ fetchResult = await documentLoader(url.href);
6610
+ }
6611
+ catch (error) {
6612
+ if (options.suppressError) {
6613
+ getLogger(["fedify", "vocab"]).error("Failed to fetch {url}: {error}", { error, url: url.href });
6614
+ return null;
6615
+ }
6616
+ throw error;
6617
+ }
6618
+ const { document } = fetchResult;
6619
+ try {
6620
+ return await Object.fromJsonLd(document, { documentLoader, contextLoader });
6621
+ }
6622
+ catch (e) {
6623
+ if (!(e instanceof TypeError))
6624
+ throw e;
6625
+ }
6626
+ throw new TypeError("Expected an object of any type of: " +
6627
+ ["https://www.w3.org/ns/activitystreams#Object"].join(", "));
6628
+ }
6629
+ /**
6630
+ * Similar to
6631
+ * {@link Activity.getTarget},
6632
+ * but returns its `@id` URL instead of the object itself.
6633
+ */
6634
+ get targetId() {
6635
+ if (this.#_3JQCmF2Ww56Ag9EWRYoSZRDNCYtF.length < 1)
6636
+ return null;
6637
+ const v = this.#_3JQCmF2Ww56Ag9EWRYoSZRDNCYtF[0];
6638
+ if (v instanceof URL)
6639
+ return v;
6640
+ return v.id;
6641
+ }
6642
+ /** Describes the indirect object, or target, of the activity. The precise
6643
+ * meaning of the target is largely dependent on the type of action being
6644
+ * described but will often be the object of the English preposition "to".
6645
+ * For instance, in the activity "John added a movie to his wishlist",
6646
+ * the target of the activity is John's wishlist. An activity can have more
6647
+ * than one target.
6648
+ */
6649
+ async getTarget(options = {}) {
6650
+ if (this.#_3JQCmF2Ww56Ag9EWRYoSZRDNCYtF.length < 1)
6651
+ return null;
6652
+ const v = this.#_3JQCmF2Ww56Ag9EWRYoSZRDNCYtF[0];
6653
+ if (v instanceof URL) {
6654
+ const fetched = await this.#fetchTarget(v, options);
6655
+ if (fetched == null)
6656
+ return null;
6657
+ this.#_3JQCmF2Ww56Ag9EWRYoSZRDNCYtF[0] = fetched;
6658
+ return fetched;
6659
+ }
6660
+ return v;
6661
+ }
6662
+ /**
6663
+ * Similar to
6664
+ * {@link Activity.getTargets},
6665
+ * but returns their `@id`s instead of the objects themselves.
6666
+ */
6667
+ get targetIds() {
6668
+ return this.#_3JQCmF2Ww56Ag9EWRYoSZRDNCYtF.map((v) => v instanceof URL ? v : v.id).filter((id) => id !== null);
6669
+ }
6670
+ /** Describes the indirect object, or target, of the activity. The precise
6671
+ * meaning of the target is largely dependent on the type of action being
6672
+ * described but will often be the object of the English preposition "to".
6673
+ * For instance, in the activity "John added a movie to his wishlist",
6674
+ * the target of the activity is John's wishlist. An activity can have more
6675
+ * than one target.
6676
+ */
6677
+ async *getTargets(options = {}) {
6678
+ const vs = this.#_3JQCmF2Ww56Ag9EWRYoSZRDNCYtF;
6679
+ for (let i = 0; i < vs.length; i++) {
6680
+ const v = vs[i];
6681
+ if (v instanceof URL) {
6682
+ const fetched = await this.#fetchTarget(v, options);
6683
+ if (fetched == null)
6684
+ continue;
6685
+ vs[i] = fetched;
6686
+ yield fetched;
6687
+ continue;
6688
+ }
6689
+ yield v;
6690
+ }
6691
+ }
6692
+ async #fetchResult(url, options = {}) {
6693
+ const documentLoader = options.documentLoader ?? this._documentLoader ??
6694
+ fetchDocumentLoader;
6695
+ const contextLoader = options.contextLoader ?? this._contextLoader ??
6696
+ fetchDocumentLoader;
6697
+ let fetchResult;
6698
+ try {
6699
+ fetchResult = await documentLoader(url.href);
6700
+ }
6701
+ catch (error) {
6702
+ if (options.suppressError) {
6703
+ getLogger(["fedify", "vocab"]).error("Failed to fetch {url}: {error}", { error, url: url.href });
6704
+ return null;
6705
+ }
6706
+ throw error;
6707
+ }
6708
+ const { document } = fetchResult;
6709
+ try {
6710
+ return await Object.fromJsonLd(document, { documentLoader, contextLoader });
6711
+ }
6712
+ catch (e) {
6713
+ if (!(e instanceof TypeError))
6714
+ throw e;
6715
+ }
6716
+ throw new TypeError("Expected an object of any type of: " +
6717
+ ["https://www.w3.org/ns/activitystreams#Object"].join(", "));
6718
+ }
6719
+ /**
6720
+ * Similar to
6721
+ * {@link Activity.getResult},
6722
+ * but returns its `@id` URL instead of the object itself.
6723
+ */
6724
+ get resultId() {
6725
+ if (this.#_u4QGFbRFcYmPEKGbPv1hpBR9r5G.length < 1)
6726
+ return null;
6727
+ const v = this.#_u4QGFbRFcYmPEKGbPv1hpBR9r5G[0];
6728
+ if (v instanceof URL)
6729
+ return v;
6730
+ return v.id;
6731
+ }
6732
+ /** Describes the result of the activity. For instance, if a particular action
6733
+ * results in the creation of a new resource, the result property can be used
6734
+ * to describe that new resource.
6735
+ */
6736
+ async getResult(options = {}) {
6737
+ if (this.#_u4QGFbRFcYmPEKGbPv1hpBR9r5G.length < 1)
6738
+ return null;
6739
+ const v = this.#_u4QGFbRFcYmPEKGbPv1hpBR9r5G[0];
6740
+ if (v instanceof URL) {
6741
+ const fetched = await this.#fetchResult(v, options);
6742
+ if (fetched == null)
6743
+ return null;
6744
+ this.#_u4QGFbRFcYmPEKGbPv1hpBR9r5G[0] = fetched;
6745
+ return fetched;
6746
+ }
6747
+ return v;
6748
+ }
6749
+ /**
6750
+ * Similar to
6751
+ * {@link Activity.getResults},
6752
+ * but returns their `@id`s instead of the objects themselves.
6753
+ */
6754
+ get resultIds() {
6755
+ return this.#_u4QGFbRFcYmPEKGbPv1hpBR9r5G.map((v) => v instanceof URL ? v : v.id).filter((id) => id !== null);
6756
+ }
6757
+ /** Describes the result of the activity. For instance, if a particular action
6758
+ * results in the creation of a new resource, the result property can be used
6759
+ * to describe that new resource.
6760
+ */
6761
+ async *getResults(options = {}) {
6762
+ const vs = this.#_u4QGFbRFcYmPEKGbPv1hpBR9r5G;
6763
+ for (let i = 0; i < vs.length; i++) {
6764
+ const v = vs[i];
6765
+ if (v instanceof URL) {
6766
+ const fetched = await this.#fetchResult(v, options);
6767
+ if (fetched == null)
6768
+ continue;
6769
+ vs[i] = fetched;
6770
+ yield fetched;
6771
+ continue;
6772
+ }
6773
+ yield v;
6774
+ }
6775
+ }
6776
+ async #fetchOrigin(url, options = {}) {
6777
+ const documentLoader = options.documentLoader ?? this._documentLoader ??
6778
+ fetchDocumentLoader;
6779
+ const contextLoader = options.contextLoader ?? this._contextLoader ??
6780
+ fetchDocumentLoader;
6781
+ let fetchResult;
6782
+ try {
6783
+ fetchResult = await documentLoader(url.href);
6784
+ }
6785
+ catch (error) {
6786
+ if (options.suppressError) {
6787
+ getLogger(["fedify", "vocab"]).error("Failed to fetch {url}: {error}", { error, url: url.href });
6788
+ return null;
6789
+ }
6790
+ throw error;
6791
+ }
6792
+ const { document } = fetchResult;
6793
+ try {
6794
+ return await Object.fromJsonLd(document, { documentLoader, contextLoader });
6795
+ }
6796
+ catch (e) {
6797
+ if (!(e instanceof TypeError))
6798
+ throw e;
6799
+ }
6800
+ throw new TypeError("Expected an object of any type of: " +
6801
+ ["https://www.w3.org/ns/activitystreams#Object"].join(", "));
6802
+ }
6803
+ /**
6804
+ * Similar to
6805
+ * {@link Activity.getOrigin},
6806
+ * but returns its `@id` URL instead of the object itself.
6807
+ */
6808
+ get originId() {
6809
+ if (this.#_25zu2s3VxVujgEKqrDycjE284XQR.length < 1)
6810
+ return null;
6811
+ const v = this.#_25zu2s3VxVujgEKqrDycjE284XQR[0];
6812
+ if (v instanceof URL)
6813
+ return v;
6814
+ return v.id;
6815
+ }
6816
+ /** Describes an indirect object of the activity from which the activity is
6817
+ * directed. The precise meaning of the origin is the object of the English
6818
+ * preposition "from". For instance, in the activity "John moved an item to
6819
+ * List B from List A", the origin of the activity is "List A".
6820
+ */
6821
+ async getOrigin(options = {}) {
6822
+ if (this.#_25zu2s3VxVujgEKqrDycjE284XQR.length < 1)
6823
+ return null;
6824
+ const v = this.#_25zu2s3VxVujgEKqrDycjE284XQR[0];
6825
+ if (v instanceof URL) {
6826
+ const fetched = await this.#fetchOrigin(v, options);
6827
+ if (fetched == null)
6828
+ return null;
6829
+ this.#_25zu2s3VxVujgEKqrDycjE284XQR[0] = fetched;
6830
+ return fetched;
6831
+ }
6832
+ return v;
6833
+ }
6834
+ /**
6835
+ * Similar to
6836
+ * {@link Activity.getOrigins},
6837
+ * but returns their `@id`s instead of the objects themselves.
6838
+ */
6839
+ get originIds() {
6840
+ return this.#_25zu2s3VxVujgEKqrDycjE284XQR.map((v) => v instanceof URL ? v : v.id).filter((id) => id !== null);
6841
+ }
6842
+ /** Describes an indirect object of the activity from which the activity is
6843
+ * directed. The precise meaning of the origin is the object of the English
6844
+ * preposition "from". For instance, in the activity "John moved an item to
6845
+ * List B from List A", the origin of the activity is "List A".
6846
+ */
6847
+ async *getOrigins(options = {}) {
6848
+ const vs = this.#_25zu2s3VxVujgEKqrDycjE284XQR;
6849
+ for (let i = 0; i < vs.length; i++) {
6850
+ const v = vs[i];
6851
+ if (v instanceof URL) {
6852
+ const fetched = await this.#fetchOrigin(v, options);
6853
+ if (fetched == null)
6854
+ continue;
6855
+ vs[i] = fetched;
6856
+ yield fetched;
6857
+ continue;
6858
+ }
6859
+ yield v;
6860
+ }
6861
+ }
6862
+ async #fetchInstrument(url, options = {}) {
6863
+ const documentLoader = options.documentLoader ?? this._documentLoader ??
6864
+ fetchDocumentLoader;
6865
+ const contextLoader = options.contextLoader ?? this._contextLoader ??
6866
+ fetchDocumentLoader;
6867
+ let fetchResult;
6868
+ try {
6869
+ fetchResult = await documentLoader(url.href);
6870
+ }
6871
+ catch (error) {
6872
+ if (options.suppressError) {
6873
+ getLogger(["fedify", "vocab"]).error("Failed to fetch {url}: {error}", { error, url: url.href });
6874
+ return null;
6875
+ }
6876
+ throw error;
6877
+ }
6878
+ const { document } = fetchResult;
6879
+ try {
6880
+ return await Object.fromJsonLd(document, { documentLoader, contextLoader });
6881
+ }
6882
+ catch (e) {
6883
+ if (!(e instanceof TypeError))
6884
+ throw e;
6885
+ }
6886
+ throw new TypeError("Expected an object of any type of: " +
6887
+ ["https://www.w3.org/ns/activitystreams#Object"].join(", "));
6888
+ }
6889
+ /**
6890
+ * Similar to
6891
+ * {@link Activity.getInstrument},
6892
+ * but returns its `@id` URL instead of the object itself.
6893
+ */
6894
+ get instrumentId() {
6895
+ if (this.#_3c5t2x7DYRo2shwTxpkd4kYSS5WQ.length < 1)
6896
+ return null;
6897
+ const v = this.#_3c5t2x7DYRo2shwTxpkd4kYSS5WQ[0];
6898
+ if (v instanceof URL)
6899
+ return v;
6900
+ return v.id;
6901
+ }
6902
+ /** Identifies one or more objects used (or to be used) in the completion of
6903
+ * an {@link Activity}.
6904
+ */
6905
+ async getInstrument(options = {}) {
6906
+ if (this.#_3c5t2x7DYRo2shwTxpkd4kYSS5WQ.length < 1)
6907
+ return null;
6908
+ const v = this.#_3c5t2x7DYRo2shwTxpkd4kYSS5WQ[0];
6909
+ if (v instanceof URL) {
6910
+ const fetched = await this.#fetchInstrument(v, options);
6911
+ if (fetched == null)
6912
+ return null;
6913
+ this.#_3c5t2x7DYRo2shwTxpkd4kYSS5WQ[0] = fetched;
6914
+ return fetched;
6915
+ }
6916
+ return v;
6917
+ }
6918
+ /**
6919
+ * Similar to
6920
+ * {@link Activity.getInstruments},
6921
+ * but returns their `@id`s instead of the objects themselves.
6922
+ */
6923
+ get instrumentIds() {
6924
+ return this.#_3c5t2x7DYRo2shwTxpkd4kYSS5WQ.map((v) => v instanceof URL ? v : v.id).filter((id) => id !== null);
6925
+ }
6926
+ /** Identifies one or more objects used (or to be used) in the completion of
6927
+ * an {@link Activity}.
6928
+ */
6929
+ async *getInstruments(options = {}) {
6930
+ const vs = this.#_3c5t2x7DYRo2shwTxpkd4kYSS5WQ;
6931
+ for (let i = 0; i < vs.length; i++) {
6932
+ const v = vs[i];
6933
+ if (v instanceof URL) {
6934
+ const fetched = await this.#fetchInstrument(v, options);
6935
+ if (fetched == null)
6936
+ continue;
6937
+ vs[i] = fetched;
6938
+ yield fetched;
6939
+ continue;
6940
+ }
6941
+ yield v;
6942
+ }
6943
+ }
6386
6944
  /**
6387
6945
  * Converts this object to a JSON-LD structure.
6388
6946
  * @returns The JSON-LD representation of this object.
@@ -6400,32 +6958,72 @@ export class Activity extends Object {
6400
6958
  });
6401
6959
  const values = baseValues[0];
6402
6960
  array = [];
6403
- for (const v of this.#_2DjTTboo3CNHU2a2JQqUSE2dbv9D) {
6961
+ for (const v of this.#_2DjTTboo3CNHU2a2JQqUSE2dbv9D) {
6962
+ const element = v instanceof URL
6963
+ ? { "@id": v.href }
6964
+ : v instanceof Application
6965
+ ? await v.toJsonLd(options)
6966
+ : v instanceof Group
6967
+ ? await v.toJsonLd(options)
6968
+ : v instanceof Organization
6969
+ ? await v.toJsonLd(options)
6970
+ : v instanceof Person
6971
+ ? await v.toJsonLd(options)
6972
+ : await v.toJsonLd(options);
6973
+ array.push(element);
6974
+ }
6975
+ if (array.length > 0) {
6976
+ values["https://www.w3.org/ns/activitystreams#actor"] = array;
6977
+ }
6978
+ array = [];
6979
+ for (const v of this.#_2MH19yxjn1wnHsNfa5n4JBhJzxyc) {
6980
+ const element = v instanceof URL
6981
+ ? { "@id": v.href }
6982
+ : await v.toJsonLd(options);
6983
+ array.push(element);
6984
+ }
6985
+ if (array.length > 0) {
6986
+ values["https://www.w3.org/ns/activitystreams#object"] = array;
6987
+ }
6988
+ array = [];
6989
+ for (const v of this.#_3JQCmF2Ww56Ag9EWRYoSZRDNCYtF) {
6990
+ const element = v instanceof URL
6991
+ ? { "@id": v.href }
6992
+ : await v.toJsonLd(options);
6993
+ array.push(element);
6994
+ }
6995
+ if (array.length > 0) {
6996
+ values["https://www.w3.org/ns/activitystreams#target"] = array;
6997
+ }
6998
+ array = [];
6999
+ for (const v of this.#_u4QGFbRFcYmPEKGbPv1hpBR9r5G) {
6404
7000
  const element = v instanceof URL
6405
7001
  ? { "@id": v.href }
6406
- : v instanceof Application
6407
- ? await v.toJsonLd(options)
6408
- : v instanceof Group
6409
- ? await v.toJsonLd(options)
6410
- : v instanceof Organization
6411
- ? await v.toJsonLd(options)
6412
- : v instanceof Person
6413
- ? await v.toJsonLd(options)
6414
- : await v.toJsonLd(options);
7002
+ : await v.toJsonLd(options);
6415
7003
  array.push(element);
6416
7004
  }
6417
7005
  if (array.length > 0) {
6418
- values["https://www.w3.org/ns/activitystreams#actor"] = array;
7006
+ values["https://www.w3.org/ns/activitystreams#result"] = array;
6419
7007
  }
6420
7008
  array = [];
6421
- for (const v of this.#_2MH19yxjn1wnHsNfa5n4JBhJzxyc) {
7009
+ for (const v of this.#_25zu2s3VxVujgEKqrDycjE284XQR) {
6422
7010
  const element = v instanceof URL
6423
7011
  ? { "@id": v.href }
6424
7012
  : await v.toJsonLd(options);
6425
7013
  array.push(element);
6426
7014
  }
6427
7015
  if (array.length > 0) {
6428
- values["https://www.w3.org/ns/activitystreams#object"] = array;
7016
+ values["https://www.w3.org/ns/activitystreams#origin"] = array;
7017
+ }
7018
+ array = [];
7019
+ for (const v of this.#_3c5t2x7DYRo2shwTxpkd4kYSS5WQ) {
7020
+ const element = v instanceof URL
7021
+ ? { "@id": v.href }
7022
+ : await v.toJsonLd(options);
7023
+ array.push(element);
7024
+ }
7025
+ if (array.length > 0) {
7026
+ values["https://www.w3.org/ns/activitystreams#instrument"] = array;
6429
7027
  }
6430
7028
  values["@type"] = ["https://www.w3.org/ns/activitystreams#Activity"];
6431
7029
  if (this.id)
@@ -6603,6 +7201,55 @@ export class Activity extends Object {
6603
7201
  _2MH19yxjn1wnHsNfa5n4JBhJzxyc.push(await Object.fromJsonLd(v, options));
6604
7202
  }
6605
7203
  instance.#_2MH19yxjn1wnHsNfa5n4JBhJzxyc = _2MH19yxjn1wnHsNfa5n4JBhJzxyc;
7204
+ const _3JQCmF2Ww56Ag9EWRYoSZRDNCYtF = [];
7205
+ for (const v of values["https://www.w3.org/ns/activitystreams#target"] ?? []) {
7206
+ if (v == null)
7207
+ continue;
7208
+ if (typeof v === "object" && "@id" in v && !("@type" in v) &&
7209
+ globalThis.Object.keys(v).length === 1) {
7210
+ _3JQCmF2Ww56Ag9EWRYoSZRDNCYtF.push(new URL(v["@id"]));
7211
+ continue;
7212
+ }
7213
+ _3JQCmF2Ww56Ag9EWRYoSZRDNCYtF.push(await Object.fromJsonLd(v, options));
7214
+ }
7215
+ instance.#_3JQCmF2Ww56Ag9EWRYoSZRDNCYtF = _3JQCmF2Ww56Ag9EWRYoSZRDNCYtF;
7216
+ const _u4QGFbRFcYmPEKGbPv1hpBR9r5G = [];
7217
+ for (const v of values["https://www.w3.org/ns/activitystreams#result"] ?? []) {
7218
+ if (v == null)
7219
+ continue;
7220
+ if (typeof v === "object" && "@id" in v && !("@type" in v) &&
7221
+ globalThis.Object.keys(v).length === 1) {
7222
+ _u4QGFbRFcYmPEKGbPv1hpBR9r5G.push(new URL(v["@id"]));
7223
+ continue;
7224
+ }
7225
+ _u4QGFbRFcYmPEKGbPv1hpBR9r5G.push(await Object.fromJsonLd(v, options));
7226
+ }
7227
+ instance.#_u4QGFbRFcYmPEKGbPv1hpBR9r5G = _u4QGFbRFcYmPEKGbPv1hpBR9r5G;
7228
+ const _25zu2s3VxVujgEKqrDycjE284XQR = [];
7229
+ for (const v of values["https://www.w3.org/ns/activitystreams#origin"] ?? []) {
7230
+ if (v == null)
7231
+ continue;
7232
+ if (typeof v === "object" && "@id" in v && !("@type" in v) &&
7233
+ globalThis.Object.keys(v).length === 1) {
7234
+ _25zu2s3VxVujgEKqrDycjE284XQR.push(new URL(v["@id"]));
7235
+ continue;
7236
+ }
7237
+ _25zu2s3VxVujgEKqrDycjE284XQR.push(await Object.fromJsonLd(v, options));
7238
+ }
7239
+ instance.#_25zu2s3VxVujgEKqrDycjE284XQR = _25zu2s3VxVujgEKqrDycjE284XQR;
7240
+ const _3c5t2x7DYRo2shwTxpkd4kYSS5WQ = [];
7241
+ for (const v of values["https://www.w3.org/ns/activitystreams#instrument"] ??
7242
+ []) {
7243
+ if (v == null)
7244
+ continue;
7245
+ if (typeof v === "object" && "@id" in v && !("@type" in v) &&
7246
+ globalThis.Object.keys(v).length === 1) {
7247
+ _3c5t2x7DYRo2shwTxpkd4kYSS5WQ.push(new URL(v["@id"]));
7248
+ continue;
7249
+ }
7250
+ _3c5t2x7DYRo2shwTxpkd4kYSS5WQ.push(await Object.fromJsonLd(v, options));
7251
+ }
7252
+ instance.#_3c5t2x7DYRo2shwTxpkd4kYSS5WQ = _3c5t2x7DYRo2shwTxpkd4kYSS5WQ;
6606
7253
  return instance;
6607
7254
  }
6608
7255
  _getCustomInspectProxy() {
@@ -6639,6 +7286,70 @@ export class Activity extends Object {
6639
7286
  _2MH19yxjn1wnHsNfa5n4JBhJzxyc.length > 0) {
6640
7287
  proxy.objects = _2MH19yxjn1wnHsNfa5n4JBhJzxyc;
6641
7288
  }
7289
+ const _3JQCmF2Ww56Ag9EWRYoSZRDNCYtF = this.#_3JQCmF2Ww56Ag9EWRYoSZRDNCYtF
7290
+ // deno-lint-ignore no-explicit-any
7291
+ .map((v) => v instanceof URL
7292
+ ? {
7293
+ [Symbol.for("Deno.customInspect")]: (inspect, options) => "URL " + inspect(v.href, options),
7294
+ [Symbol.for("nodejs.util.inspect.custom")]: (_depth, options, inspect) => "URL " + inspect(v.href, options),
7295
+ }
7296
+ : v);
7297
+ if (_3JQCmF2Ww56Ag9EWRYoSZRDNCYtF.length == 1) {
7298
+ proxy.target = _3JQCmF2Ww56Ag9EWRYoSZRDNCYtF[0];
7299
+ }
7300
+ if (_3JQCmF2Ww56Ag9EWRYoSZRDNCYtF.length > 1 ||
7301
+ !("target" in proxy) &&
7302
+ _3JQCmF2Ww56Ag9EWRYoSZRDNCYtF.length > 0) {
7303
+ proxy.targets = _3JQCmF2Ww56Ag9EWRYoSZRDNCYtF;
7304
+ }
7305
+ const _u4QGFbRFcYmPEKGbPv1hpBR9r5G = this.#_u4QGFbRFcYmPEKGbPv1hpBR9r5G
7306
+ // deno-lint-ignore no-explicit-any
7307
+ .map((v) => v instanceof URL
7308
+ ? {
7309
+ [Symbol.for("Deno.customInspect")]: (inspect, options) => "URL " + inspect(v.href, options),
7310
+ [Symbol.for("nodejs.util.inspect.custom")]: (_depth, options, inspect) => "URL " + inspect(v.href, options),
7311
+ }
7312
+ : v);
7313
+ if (_u4QGFbRFcYmPEKGbPv1hpBR9r5G.length == 1) {
7314
+ proxy.result = _u4QGFbRFcYmPEKGbPv1hpBR9r5G[0];
7315
+ }
7316
+ if (_u4QGFbRFcYmPEKGbPv1hpBR9r5G.length > 1 ||
7317
+ !("result" in proxy) &&
7318
+ _u4QGFbRFcYmPEKGbPv1hpBR9r5G.length > 0) {
7319
+ proxy.results = _u4QGFbRFcYmPEKGbPv1hpBR9r5G;
7320
+ }
7321
+ const _25zu2s3VxVujgEKqrDycjE284XQR = this.#_25zu2s3VxVujgEKqrDycjE284XQR
7322
+ // deno-lint-ignore no-explicit-any
7323
+ .map((v) => v instanceof URL
7324
+ ? {
7325
+ [Symbol.for("Deno.customInspect")]: (inspect, options) => "URL " + inspect(v.href, options),
7326
+ [Symbol.for("nodejs.util.inspect.custom")]: (_depth, options, inspect) => "URL " + inspect(v.href, options),
7327
+ }
7328
+ : v);
7329
+ if (_25zu2s3VxVujgEKqrDycjE284XQR.length == 1) {
7330
+ proxy.origin = _25zu2s3VxVujgEKqrDycjE284XQR[0];
7331
+ }
7332
+ if (_25zu2s3VxVujgEKqrDycjE284XQR.length > 1 ||
7333
+ !("origin" in proxy) &&
7334
+ _25zu2s3VxVujgEKqrDycjE284XQR.length > 0) {
7335
+ proxy.origins = _25zu2s3VxVujgEKqrDycjE284XQR;
7336
+ }
7337
+ const _3c5t2x7DYRo2shwTxpkd4kYSS5WQ = this.#_3c5t2x7DYRo2shwTxpkd4kYSS5WQ
7338
+ // deno-lint-ignore no-explicit-any
7339
+ .map((v) => v instanceof URL
7340
+ ? {
7341
+ [Symbol.for("Deno.customInspect")]: (inspect, options) => "URL " + inspect(v.href, options),
7342
+ [Symbol.for("nodejs.util.inspect.custom")]: (_depth, options, inspect) => "URL " + inspect(v.href, options),
7343
+ }
7344
+ : v);
7345
+ if (_3c5t2x7DYRo2shwTxpkd4kYSS5WQ.length == 1) {
7346
+ proxy.instrument = _3c5t2x7DYRo2shwTxpkd4kYSS5WQ[0];
7347
+ }
7348
+ if (_3c5t2x7DYRo2shwTxpkd4kYSS5WQ.length > 1 ||
7349
+ !("instrument" in proxy) &&
7350
+ _3c5t2x7DYRo2shwTxpkd4kYSS5WQ.length > 0) {
7351
+ proxy.instruments = _3c5t2x7DYRo2shwTxpkd4kYSS5WQ;
7352
+ }
6642
7353
  return proxy;
6643
7354
  }
6644
7355
  [Symbol.for("Deno.customInspect")](inspect, options) {
@@ -7011,6 +7722,7 @@ export class Application extends Object {
7011
7722
  #_3yAv8jymNfNuJUDuBzJ1NQhdbAee = [];
7012
7723
  #_BBCTgfphhsFzpVfKTykGSpBNwoA = [];
7013
7724
  #_3bgkPwJanyTCoVFM9ovRcus8tKkU = [];
7725
+ #_4N1vBJzXDf8NbBumeECQMFvKetja = [];
7014
7726
  #_3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = [];
7015
7727
  #_sEoQwUbfk4hEfugzNQ2ZiDcLMkG = [];
7016
7728
  #_gAJzg1QDc4rcefFsUzGSYmyXvNH = [];
@@ -7169,6 +7881,16 @@ export class Application extends Object {
7169
7881
  "Collection | URL" + ".");
7170
7882
  }
7171
7883
  }
7884
+ if ("featured" in values && values.featured != null) {
7885
+ if (values.featured instanceof Collection || values.featured instanceof URL) {
7886
+ // @ts-ignore: type is checked above.
7887
+ this.#_4N1vBJzXDf8NbBumeECQMFvKetja = [values.featured];
7888
+ }
7889
+ else {
7890
+ throw new TypeError("The featured must be of type " +
7891
+ "Collection | URL" + ".");
7892
+ }
7893
+ }
7172
7894
  if ("streams" in values && values.streams != null) {
7173
7895
  if (Array.isArray(values.streams) &&
7174
7896
  values.streams.every((v) => v instanceof Collection || v instanceof URL)) {
@@ -7395,6 +8117,17 @@ export class Application extends Object {
7395
8117
  "Collection | URL" + ".");
7396
8118
  }
7397
8119
  }
8120
+ clone.#_4N1vBJzXDf8NbBumeECQMFvKetja = this.#_4N1vBJzXDf8NbBumeECQMFvKetja;
8121
+ if ("featured" in values && values.featured != null) {
8122
+ if (values.featured instanceof Collection || values.featured instanceof URL) {
8123
+ // @ts-ignore: type is checked above.
8124
+ clone.#_4N1vBJzXDf8NbBumeECQMFvKetja = [values.featured];
8125
+ }
8126
+ else {
8127
+ throw new TypeError("The featured must be of type " +
8128
+ "Collection | URL" + ".");
8129
+ }
8130
+ }
7398
8131
  clone.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = this.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9;
7399
8132
  if ("streams" in values && values.streams != null) {
7400
8133
  if (Array.isArray(values.streams) &&
@@ -7968,6 +8701,64 @@ export class Application extends Object {
7968
8701
  }
7969
8702
  return v;
7970
8703
  }
8704
+ async #fetchFeatured(url, options = {}) {
8705
+ const documentLoader = options.documentLoader ?? this._documentLoader ??
8706
+ fetchDocumentLoader;
8707
+ const contextLoader = options.contextLoader ?? this._contextLoader ??
8708
+ fetchDocumentLoader;
8709
+ let fetchResult;
8710
+ try {
8711
+ fetchResult = await documentLoader(url.href);
8712
+ }
8713
+ catch (error) {
8714
+ if (options.suppressError) {
8715
+ getLogger(["fedify", "vocab"]).error("Failed to fetch {url}: {error}", { error, url: url.href });
8716
+ return null;
8717
+ }
8718
+ throw error;
8719
+ }
8720
+ const { document } = fetchResult;
8721
+ try {
8722
+ return await Collection.fromJsonLd(document, { documentLoader, contextLoader });
8723
+ }
8724
+ catch (e) {
8725
+ if (!(e instanceof TypeError))
8726
+ throw e;
8727
+ }
8728
+ throw new TypeError("Expected an object of any type of: " +
8729
+ ["https://www.w3.org/ns/activitystreams#Collection"].join(", "));
8730
+ }
8731
+ /**
8732
+ * Similar to
8733
+ * {@link Application.getFeatured},
8734
+ * but returns its `@id` URL instead of the object itself.
8735
+ */
8736
+ get featuredId() {
8737
+ if (this.#_4N1vBJzXDf8NbBumeECQMFvKetja.length < 1)
8738
+ return null;
8739
+ const v = this.#_4N1vBJzXDf8NbBumeECQMFvKetja[0];
8740
+ if (v instanceof URL)
8741
+ return v;
8742
+ return v.id;
8743
+ }
8744
+ /** What is known in Mastodon as "pinned statuses", or statuses that are always
8745
+ * featured at the top of people's profiles, is implemented using an extra
8746
+ * property `featured` on the actor object that points to a {@link Collection}
8747
+ * of objects.
8748
+ */
8749
+ async getFeatured(options = {}) {
8750
+ if (this.#_4N1vBJzXDf8NbBumeECQMFvKetja.length < 1)
8751
+ return null;
8752
+ const v = this.#_4N1vBJzXDf8NbBumeECQMFvKetja[0];
8753
+ if (v instanceof URL) {
8754
+ const fetched = await this.#fetchFeatured(v, options);
8755
+ if (fetched == null)
8756
+ return null;
8757
+ this.#_4N1vBJzXDf8NbBumeECQMFvKetja[0] = fetched;
8758
+ return fetched;
8759
+ }
8760
+ return v;
8761
+ }
7971
8762
  async #fetchStream(url, options = {}) {
7972
8763
  const documentLoader = options.documentLoader ?? this._documentLoader ??
7973
8764
  fetchDocumentLoader;
@@ -8166,6 +8957,15 @@ export class Application extends Object {
8166
8957
  values["https://www.w3.org/ns/activitystreams#liked"] = array;
8167
8958
  }
8168
8959
  array = [];
8960
+ for (const v of this.#_4N1vBJzXDf8NbBumeECQMFvKetja) {
8961
+ const element = v instanceof URL
8962
+ ? { "@id": v.href }
8963
+ : await v.toJsonLd(options);
8964
+ array.push(element);
8965
+ }
8966
+ if (array.length > 0)
8967
+ values["http://joinmastodon.org/ns#featured"] = array;
8968
+ array = [];
8169
8969
  for (const v of this.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9) {
8170
8970
  const element = v instanceof URL
8171
8971
  ? { "@id": v.href }
@@ -8230,6 +9030,7 @@ export class Application extends Object {
8230
9030
  {
8231
9031
  "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
8232
9032
  "toot": "http://joinmastodon.org/ns#",
9033
+ "featured": { "@id": "toot:featured", "@type": "@id" },
8233
9034
  "discoverable": "toot:discoverable",
8234
9035
  "suspended": "toot:suspended",
8235
9036
  "memorial": "toot:memorial",
@@ -8389,6 +9190,18 @@ export class Application extends Object {
8389
9190
  _3bgkPwJanyTCoVFM9ovRcus8tKkU.push(await Collection.fromJsonLd(v, options));
8390
9191
  }
8391
9192
  instance.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = _3bgkPwJanyTCoVFM9ovRcus8tKkU;
9193
+ const _4N1vBJzXDf8NbBumeECQMFvKetja = [];
9194
+ for (const v of values["http://joinmastodon.org/ns#featured"] ?? []) {
9195
+ if (v == null)
9196
+ continue;
9197
+ if (typeof v === "object" && "@id" in v && !("@type" in v) &&
9198
+ globalThis.Object.keys(v).length === 1) {
9199
+ _4N1vBJzXDf8NbBumeECQMFvKetja.push(new URL(v["@id"]));
9200
+ continue;
9201
+ }
9202
+ _4N1vBJzXDf8NbBumeECQMFvKetja.push(await Collection.fromJsonLd(v, options));
9203
+ }
9204
+ instance.#_4N1vBJzXDf8NbBumeECQMFvKetja = _4N1vBJzXDf8NbBumeECQMFvKetja;
8392
9205
  const _3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = [];
8393
9206
  for (const v of values["https://www.w3.org/ns/activitystreams#streams"] ?? []) {
8394
9207
  if (v == null)
@@ -8554,6 +9367,17 @@ export class Application extends Object {
8554
9367
  if (_3bgkPwJanyTCoVFM9ovRcus8tKkU.length == 1) {
8555
9368
  proxy.liked = _3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
8556
9369
  }
9370
+ const _4N1vBJzXDf8NbBumeECQMFvKetja = this.#_4N1vBJzXDf8NbBumeECQMFvKetja
9371
+ // deno-lint-ignore no-explicit-any
9372
+ .map((v) => v instanceof URL
9373
+ ? {
9374
+ [Symbol.for("Deno.customInspect")]: (inspect, options) => "URL " + inspect(v.href, options),
9375
+ [Symbol.for("nodejs.util.inspect.custom")]: (_depth, options, inspect) => "URL " + inspect(v.href, options),
9376
+ }
9377
+ : v);
9378
+ if (_4N1vBJzXDf8NbBumeECQMFvKetja.length == 1) {
9379
+ proxy.featured = _4N1vBJzXDf8NbBumeECQMFvKetja[0];
9380
+ }
8557
9381
  const _3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = this.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9
8558
9382
  // deno-lint-ignore no-explicit-any
8559
9383
  .map((v) => v instanceof URL
@@ -9607,46 +10431,44 @@ export class Collection extends Object {
9607
10431
  }
9608
10432
  if ("current" in values && values.current != null) {
9609
10433
  if (values.current instanceof CollectionPage ||
9610
- values.current instanceof Link || values.current instanceof URL) {
10434
+ values.current instanceof URL) {
9611
10435
  // @ts-ignore: type is checked above.
9612
10436
  this.#_3UyUdxnyn6cDn53QKrh4MBiearma = [values.current];
9613
10437
  }
9614
10438
  else {
9615
10439
  throw new TypeError("The current must be of type " +
9616
- "CollectionPage | Link | URL" + ".");
10440
+ "CollectionPage | URL" + ".");
9617
10441
  }
9618
10442
  }
9619
10443
  if ("first" in values && values.first != null) {
9620
- if (values.first instanceof CollectionPage ||
9621
- values.first instanceof Link || values.first instanceof URL) {
10444
+ if (values.first instanceof CollectionPage || values.first instanceof URL) {
9622
10445
  // @ts-ignore: type is checked above.
9623
10446
  this.#_J52RqweMe6hhv7RnLJMC8BExTE5 = [values.first];
9624
10447
  }
9625
10448
  else {
9626
10449
  throw new TypeError("The first must be of type " +
9627
- "CollectionPage | Link | URL" + ".");
10450
+ "CollectionPage | URL" + ".");
9628
10451
  }
9629
10452
  }
9630
10453
  if ("last" in values && values.last != null) {
9631
- if (values.last instanceof CollectionPage || values.last instanceof Link ||
9632
- values.last instanceof URL) {
10454
+ if (values.last instanceof CollectionPage || values.last instanceof URL) {
9633
10455
  // @ts-ignore: type is checked above.
9634
10456
  this.#_gyJJnyEFnuNVi1HFZKfAn3Hfn26 = [values.last];
9635
10457
  }
9636
10458
  else {
9637
10459
  throw new TypeError("The last must be of type " +
9638
- "CollectionPage | Link | URL" + ".");
10460
+ "CollectionPage | URL" + ".");
9639
10461
  }
9640
10462
  }
9641
10463
  if ("items" in values && values.items != null) {
9642
10464
  if (Array.isArray(values.items) &&
9643
- values.items.every((v) => v instanceof Object || v instanceof Link || v instanceof URL)) {
10465
+ values.items.every((v) => v instanceof Object || v instanceof URL)) {
9644
10466
  // @ts-ignore: type is checked above.
9645
10467
  this.#_2JPCKWTcfBmTCcW8Tv3TpRaLVaqg = values.items;
9646
10468
  }
9647
10469
  else {
9648
10470
  throw new TypeError("The items must be an array of type " +
9649
- "Object | Link | URL" + ".");
10471
+ "Object | URL" + ".");
9650
10472
  }
9651
10473
  }
9652
10474
  }
@@ -9673,49 +10495,47 @@ export class Collection extends Object {
9673
10495
  clone.#_3UyUdxnyn6cDn53QKrh4MBiearma = this.#_3UyUdxnyn6cDn53QKrh4MBiearma;
9674
10496
  if ("current" in values && values.current != null) {
9675
10497
  if (values.current instanceof CollectionPage ||
9676
- values.current instanceof Link || values.current instanceof URL) {
10498
+ values.current instanceof URL) {
9677
10499
  // @ts-ignore: type is checked above.
9678
10500
  clone.#_3UyUdxnyn6cDn53QKrh4MBiearma = [values.current];
9679
10501
  }
9680
10502
  else {
9681
10503
  throw new TypeError("The current must be of type " +
9682
- "CollectionPage | Link | URL" + ".");
10504
+ "CollectionPage | URL" + ".");
9683
10505
  }
9684
10506
  }
9685
10507
  clone.#_J52RqweMe6hhv7RnLJMC8BExTE5 = this.#_J52RqweMe6hhv7RnLJMC8BExTE5;
9686
10508
  if ("first" in values && values.first != null) {
9687
- if (values.first instanceof CollectionPage ||
9688
- values.first instanceof Link || values.first instanceof URL) {
10509
+ if (values.first instanceof CollectionPage || values.first instanceof URL) {
9689
10510
  // @ts-ignore: type is checked above.
9690
10511
  clone.#_J52RqweMe6hhv7RnLJMC8BExTE5 = [values.first];
9691
10512
  }
9692
10513
  else {
9693
10514
  throw new TypeError("The first must be of type " +
9694
- "CollectionPage | Link | URL" + ".");
10515
+ "CollectionPage | URL" + ".");
9695
10516
  }
9696
10517
  }
9697
10518
  clone.#_gyJJnyEFnuNVi1HFZKfAn3Hfn26 = this.#_gyJJnyEFnuNVi1HFZKfAn3Hfn26;
9698
10519
  if ("last" in values && values.last != null) {
9699
- if (values.last instanceof CollectionPage || values.last instanceof Link ||
9700
- values.last instanceof URL) {
10520
+ if (values.last instanceof CollectionPage || values.last instanceof URL) {
9701
10521
  // @ts-ignore: type is checked above.
9702
10522
  clone.#_gyJJnyEFnuNVi1HFZKfAn3Hfn26 = [values.last];
9703
10523
  }
9704
10524
  else {
9705
10525
  throw new TypeError("The last must be of type " +
9706
- "CollectionPage | Link | URL" + ".");
10526
+ "CollectionPage | URL" + ".");
9707
10527
  }
9708
10528
  }
9709
10529
  clone.#_2JPCKWTcfBmTCcW8Tv3TpRaLVaqg = this.#_2JPCKWTcfBmTCcW8Tv3TpRaLVaqg;
9710
10530
  if ("items" in values && values.items != null) {
9711
10531
  if (Array.isArray(values.items) &&
9712
- values.items.every((v) => v instanceof Object || v instanceof Link || v instanceof URL)) {
10532
+ values.items.every((v) => v instanceof Object || v instanceof URL)) {
9713
10533
  // @ts-ignore: type is checked above.
9714
10534
  clone.#_2JPCKWTcfBmTCcW8Tv3TpRaLVaqg = values.items;
9715
10535
  }
9716
10536
  else {
9717
10537
  throw new TypeError("The items must be an array of type " +
9718
- "Object | Link | URL" + ".");
10538
+ "Object | URL" + ".");
9719
10539
  }
9720
10540
  }
9721
10541
  return clone;
@@ -9753,18 +10573,8 @@ export class Collection extends Object {
9753
10573
  if (!(e instanceof TypeError))
9754
10574
  throw e;
9755
10575
  }
9756
- try {
9757
- return await Link.fromJsonLd(document, { documentLoader, contextLoader });
9758
- }
9759
- catch (e) {
9760
- if (!(e instanceof TypeError))
9761
- throw e;
9762
- }
9763
10576
  throw new TypeError("Expected an object of any type of: " +
9764
- [
9765
- "https://www.w3.org/ns/activitystreams#CollectionPage",
9766
- "https://www.w3.org/ns/activitystreams#Link",
9767
- ].join(", "));
10577
+ ["https://www.w3.org/ns/activitystreams#CollectionPage"].join(", "));
9768
10578
  }
9769
10579
  /**
9770
10580
  * Similar to
@@ -9819,18 +10629,8 @@ export class Collection extends Object {
9819
10629
  if (!(e instanceof TypeError))
9820
10630
  throw e;
9821
10631
  }
9822
- try {
9823
- return await Link.fromJsonLd(document, { documentLoader, contextLoader });
9824
- }
9825
- catch (e) {
9826
- if (!(e instanceof TypeError))
9827
- throw e;
9828
- }
9829
10632
  throw new TypeError("Expected an object of any type of: " +
9830
- [
9831
- "https://www.w3.org/ns/activitystreams#CollectionPage",
9832
- "https://www.w3.org/ns/activitystreams#Link",
9833
- ].join(", "));
10633
+ ["https://www.w3.org/ns/activitystreams#CollectionPage"].join(", "));
9834
10634
  }
9835
10635
  /**
9836
10636
  * Similar to
@@ -9885,18 +10685,8 @@ export class Collection extends Object {
9885
10685
  if (!(e instanceof TypeError))
9886
10686
  throw e;
9887
10687
  }
9888
- try {
9889
- return await Link.fromJsonLd(document, { documentLoader, contextLoader });
9890
- }
9891
- catch (e) {
9892
- if (!(e instanceof TypeError))
9893
- throw e;
9894
- }
9895
10688
  throw new TypeError("Expected an object of any type of: " +
9896
- [
9897
- "https://www.w3.org/ns/activitystreams#CollectionPage",
9898
- "https://www.w3.org/ns/activitystreams#Link",
9899
- ].join(", "));
10689
+ ["https://www.w3.org/ns/activitystreams#CollectionPage"].join(", "));
9900
10690
  }
9901
10691
  /**
9902
10692
  * Similar to
@@ -9951,18 +10741,8 @@ export class Collection extends Object {
9951
10741
  if (!(e instanceof TypeError))
9952
10742
  throw e;
9953
10743
  }
9954
- try {
9955
- return await Link.fromJsonLd(document, { documentLoader, contextLoader });
9956
- }
9957
- catch (e) {
9958
- if (!(e instanceof TypeError))
9959
- throw e;
9960
- }
9961
10744
  throw new TypeError("Expected an object of any type of: " +
9962
- [
9963
- "https://www.w3.org/ns/activitystreams#Object",
9964
- "https://www.w3.org/ns/activitystreams#Link",
9965
- ].join(", "));
10745
+ ["https://www.w3.org/ns/activitystreams#Object"].join(", "));
9966
10746
  }
9967
10747
  /**
9968
10748
  * Similar to
@@ -10021,9 +10801,7 @@ export class Collection extends Object {
10021
10801
  for (const v of this.#_3UyUdxnyn6cDn53QKrh4MBiearma) {
10022
10802
  const element = v instanceof URL
10023
10803
  ? { "@id": v.href }
10024
- : v instanceof CollectionPage
10025
- ? await v.toJsonLd(options)
10026
- : await v.toJsonLd(options);
10804
+ : await v.toJsonLd(options);
10027
10805
  array.push(element);
10028
10806
  }
10029
10807
  if (array.length > 0) {
@@ -10033,9 +10811,7 @@ export class Collection extends Object {
10033
10811
  for (const v of this.#_J52RqweMe6hhv7RnLJMC8BExTE5) {
10034
10812
  const element = v instanceof URL
10035
10813
  ? { "@id": v.href }
10036
- : v instanceof CollectionPage
10037
- ? await v.toJsonLd(options)
10038
- : await v.toJsonLd(options);
10814
+ : await v.toJsonLd(options);
10039
10815
  array.push(element);
10040
10816
  }
10041
10817
  if (array.length > 0) {
@@ -10045,9 +10821,7 @@ export class Collection extends Object {
10045
10821
  for (const v of this.#_gyJJnyEFnuNVi1HFZKfAn3Hfn26) {
10046
10822
  const element = v instanceof URL
10047
10823
  ? { "@id": v.href }
10048
- : v instanceof CollectionPage
10049
- ? await v.toJsonLd(options)
10050
- : await v.toJsonLd(options);
10824
+ : await v.toJsonLd(options);
10051
10825
  array.push(element);
10052
10826
  }
10053
10827
  if (array.length > 0) {
@@ -10057,9 +10831,7 @@ export class Collection extends Object {
10057
10831
  for (const v of this.#_2JPCKWTcfBmTCcW8Tv3TpRaLVaqg) {
10058
10832
  const element = v instanceof URL
10059
10833
  ? { "@id": v.href }
10060
- : v instanceof Object
10061
- ? await v.toJsonLd(options)
10062
- : await v.toJsonLd(options);
10834
+ : await v.toJsonLd(options);
10063
10835
  array.push(element);
10064
10836
  }
10065
10837
  if (array.length > 0) {
@@ -10130,37 +10902,19 @@ export class Collection extends Object {
10130
10902
  []) {
10131
10903
  if (v == null)
10132
10904
  continue;
10133
- _XDbmNDuWHmrhqH712zqtecdbv1V.push(v["@value"]);
10134
- }
10135
- instance.#_XDbmNDuWHmrhqH712zqtecdbv1V = _XDbmNDuWHmrhqH712zqtecdbv1V;
10136
- const _3UyUdxnyn6cDn53QKrh4MBiearma = [];
10137
- for (const v of values["https://www.w3.org/ns/activitystreams#current"] ?? []) {
10138
- if (v == null)
10139
- continue;
10140
- if (typeof v === "object" && "@id" in v && !("@type" in v) &&
10141
- globalThis.Object.keys(v).length === 1) {
10142
- _3UyUdxnyn6cDn53QKrh4MBiearma.push(new URL(v["@id"]));
10143
- continue;
10144
- }
10145
- const decoded = typeof v === "object" && "@type" in v &&
10146
- Array.isArray(v["@type"]) &&
10147
- [
10148
- "https://www.w3.org/ns/activitystreams#CollectionPage",
10149
- "https://www.w3.org/ns/activitystreams#OrderedCollectionPage",
10150
- ].some((t) => v["@type"].includes(t))
10151
- ? await CollectionPage.fromJsonLd(v, options)
10152
- : typeof v === "object" && "@type" in v &&
10153
- Array.isArray(v["@type"]) &&
10154
- [
10155
- "https://www.w3.org/ns/activitystreams#Link",
10156
- "https://www.w3.org/ns/activitystreams#Hashtag",
10157
- "https://www.w3.org/ns/activitystreams#Mention",
10158
- ].some((t) => v["@type"].includes(t))
10159
- ? await Link.fromJsonLd(v, options)
10160
- : undefined;
10161
- if (typeof decoded === "undefined")
10162
- continue;
10163
- _3UyUdxnyn6cDn53QKrh4MBiearma.push(decoded);
10905
+ _XDbmNDuWHmrhqH712zqtecdbv1V.push(v["@value"]);
10906
+ }
10907
+ instance.#_XDbmNDuWHmrhqH712zqtecdbv1V = _XDbmNDuWHmrhqH712zqtecdbv1V;
10908
+ const _3UyUdxnyn6cDn53QKrh4MBiearma = [];
10909
+ for (const v of values["https://www.w3.org/ns/activitystreams#current"] ?? []) {
10910
+ if (v == null)
10911
+ continue;
10912
+ if (typeof v === "object" && "@id" in v && !("@type" in v) &&
10913
+ globalThis.Object.keys(v).length === 1) {
10914
+ _3UyUdxnyn6cDn53QKrh4MBiearma.push(new URL(v["@id"]));
10915
+ continue;
10916
+ }
10917
+ _3UyUdxnyn6cDn53QKrh4MBiearma.push(await CollectionPage.fromJsonLd(v, options));
10164
10918
  }
10165
10919
  instance.#_3UyUdxnyn6cDn53QKrh4MBiearma = _3UyUdxnyn6cDn53QKrh4MBiearma;
10166
10920
  const _J52RqweMe6hhv7RnLJMC8BExTE5 = [];
@@ -10172,25 +10926,7 @@ export class Collection extends Object {
10172
10926
  _J52RqweMe6hhv7RnLJMC8BExTE5.push(new URL(v["@id"]));
10173
10927
  continue;
10174
10928
  }
10175
- const decoded = typeof v === "object" && "@type" in v &&
10176
- Array.isArray(v["@type"]) &&
10177
- [
10178
- "https://www.w3.org/ns/activitystreams#CollectionPage",
10179
- "https://www.w3.org/ns/activitystreams#OrderedCollectionPage",
10180
- ].some((t) => v["@type"].includes(t))
10181
- ? await CollectionPage.fromJsonLd(v, options)
10182
- : typeof v === "object" && "@type" in v &&
10183
- Array.isArray(v["@type"]) &&
10184
- [
10185
- "https://www.w3.org/ns/activitystreams#Link",
10186
- "https://www.w3.org/ns/activitystreams#Hashtag",
10187
- "https://www.w3.org/ns/activitystreams#Mention",
10188
- ].some((t) => v["@type"].includes(t))
10189
- ? await Link.fromJsonLd(v, options)
10190
- : undefined;
10191
- if (typeof decoded === "undefined")
10192
- continue;
10193
- _J52RqweMe6hhv7RnLJMC8BExTE5.push(decoded);
10929
+ _J52RqweMe6hhv7RnLJMC8BExTE5.push(await CollectionPage.fromJsonLd(v, options));
10194
10930
  }
10195
10931
  instance.#_J52RqweMe6hhv7RnLJMC8BExTE5 = _J52RqweMe6hhv7RnLJMC8BExTE5;
10196
10932
  const _gyJJnyEFnuNVi1HFZKfAn3Hfn26 = [];
@@ -10202,25 +10938,7 @@ export class Collection extends Object {
10202
10938
  _gyJJnyEFnuNVi1HFZKfAn3Hfn26.push(new URL(v["@id"]));
10203
10939
  continue;
10204
10940
  }
10205
- const decoded = typeof v === "object" && "@type" in v &&
10206
- Array.isArray(v["@type"]) &&
10207
- [
10208
- "https://www.w3.org/ns/activitystreams#CollectionPage",
10209
- "https://www.w3.org/ns/activitystreams#OrderedCollectionPage",
10210
- ].some((t) => v["@type"].includes(t))
10211
- ? await CollectionPage.fromJsonLd(v, options)
10212
- : typeof v === "object" && "@type" in v &&
10213
- Array.isArray(v["@type"]) &&
10214
- [
10215
- "https://www.w3.org/ns/activitystreams#Link",
10216
- "https://www.w3.org/ns/activitystreams#Hashtag",
10217
- "https://www.w3.org/ns/activitystreams#Mention",
10218
- ].some((t) => v["@type"].includes(t))
10219
- ? await Link.fromJsonLd(v, options)
10220
- : undefined;
10221
- if (typeof decoded === "undefined")
10222
- continue;
10223
- _gyJJnyEFnuNVi1HFZKfAn3Hfn26.push(decoded);
10941
+ _gyJJnyEFnuNVi1HFZKfAn3Hfn26.push(await CollectionPage.fromJsonLd(v, options));
10224
10942
  }
10225
10943
  instance.#_gyJJnyEFnuNVi1HFZKfAn3Hfn26 = _gyJJnyEFnuNVi1HFZKfAn3Hfn26;
10226
10944
  const _2JPCKWTcfBmTCcW8Tv3TpRaLVaqg = [];
@@ -10232,66 +10950,7 @@ export class Collection extends Object {
10232
10950
  _2JPCKWTcfBmTCcW8Tv3TpRaLVaqg.push(new URL(v["@id"]));
10233
10951
  continue;
10234
10952
  }
10235
- const decoded = typeof v === "object" && "@type" in v &&
10236
- Array.isArray(v["@type"]) &&
10237
- [
10238
- "https://www.w3.org/ns/activitystreams#Object",
10239
- "http://joinmastodon.org/ns#Emoji",
10240
- "https://www.w3.org/ns/activitystreams#Activity",
10241
- "https://www.w3.org/ns/activitystreams#Accept",
10242
- "https://www.w3.org/ns/activitystreams#Add",
10243
- "https://www.w3.org/ns/activitystreams#Announce",
10244
- "https://www.w3.org/ns/activitystreams#Create",
10245
- "https://www.w3.org/ns/activitystreams#Delete",
10246
- "https://www.w3.org/ns/activitystreams#Dislike",
10247
- "https://www.w3.org/ns/activitystreams#Flag",
10248
- "https://www.w3.org/ns/activitystreams#Follow",
10249
- "https://www.w3.org/ns/activitystreams#Ignore",
10250
- "https://www.w3.org/ns/activitystreams#Block",
10251
- "https://www.w3.org/ns/activitystreams#IntransitiveActivity",
10252
- "https://www.w3.org/ns/activitystreams#Arrive",
10253
- "https://www.w3.org/ns/activitystreams#Question",
10254
- "https://www.w3.org/ns/activitystreams#Like",
10255
- "https://www.w3.org/ns/activitystreams#Offer",
10256
- "https://www.w3.org/ns/activitystreams#Reject",
10257
- "https://www.w3.org/ns/activitystreams#Remove",
10258
- "https://www.w3.org/ns/activitystreams#Undo",
10259
- "https://www.w3.org/ns/activitystreams#Update",
10260
- "https://www.w3.org/ns/activitystreams#Application",
10261
- "https://www.w3.org/ns/activitystreams#Article",
10262
- "https://www.w3.org/ns/activitystreams#Collection",
10263
- "https://www.w3.org/ns/activitystreams#CollectionPage",
10264
- "https://www.w3.org/ns/activitystreams#OrderedCollectionPage",
10265
- "https://www.w3.org/ns/activitystreams#OrderedCollection",
10266
- "https://www.w3.org/ns/activitystreams#Document",
10267
- "https://www.w3.org/ns/activitystreams#Audio",
10268
- "https://www.w3.org/ns/activitystreams#Image",
10269
- "https://www.w3.org/ns/activitystreams#Page",
10270
- "https://www.w3.org/ns/activitystreams#Video",
10271
- "https://www.w3.org/ns/activitystreams#Event",
10272
- "https://www.w3.org/ns/activitystreams#Group",
10273
- "https://www.w3.org/ns/activitystreams#Note",
10274
- "https://www.w3.org/ns/activitystreams#Organization",
10275
- "https://www.w3.org/ns/activitystreams#Person",
10276
- "https://www.w3.org/ns/activitystreams#Place",
10277
- "https://www.w3.org/ns/activitystreams#Profile",
10278
- "https://www.w3.org/ns/activitystreams#Relationship",
10279
- "https://www.w3.org/ns/activitystreams#Service",
10280
- "https://www.w3.org/ns/activitystreams#Tombstone",
10281
- ].some((t) => v["@type"].includes(t))
10282
- ? await Object.fromJsonLd(v, options)
10283
- : typeof v === "object" && "@type" in v &&
10284
- Array.isArray(v["@type"]) &&
10285
- [
10286
- "https://www.w3.org/ns/activitystreams#Link",
10287
- "https://www.w3.org/ns/activitystreams#Hashtag",
10288
- "https://www.w3.org/ns/activitystreams#Mention",
10289
- ].some((t) => v["@type"].includes(t))
10290
- ? await Link.fromJsonLd(v, options)
10291
- : undefined;
10292
- if (typeof decoded === "undefined")
10293
- continue;
10294
- _2JPCKWTcfBmTCcW8Tv3TpRaLVaqg.push(decoded);
10953
+ _2JPCKWTcfBmTCcW8Tv3TpRaLVaqg.push(await Object.fromJsonLd(v, options));
10295
10954
  }
10296
10955
  instance.#_2JPCKWTcfBmTCcW8Tv3TpRaLVaqg = _2JPCKWTcfBmTCcW8Tv3TpRaLVaqg;
10297
10956
  return instance;
@@ -10388,36 +11047,33 @@ export class CollectionPage extends Collection {
10388
11047
  constructor(values, { documentLoader, contextLoader, } = {}) {
10389
11048
  super(values, { documentLoader, contextLoader });
10390
11049
  if ("partOf" in values && values.partOf != null) {
10391
- if (values.partOf instanceof Link || values.partOf instanceof Collection ||
10392
- values.partOf instanceof URL) {
11050
+ if (values.partOf instanceof Collection || values.partOf instanceof URL) {
10393
11051
  // @ts-ignore: type is checked above.
10394
11052
  this.#_2kWgBhQKjEauxx8C6qF3ZQamK4Le = [values.partOf];
10395
11053
  }
10396
11054
  else {
10397
11055
  throw new TypeError("The partOf must be of type " +
10398
- "Link | Collection | URL" + ".");
11056
+ "Collection | URL" + ".");
10399
11057
  }
10400
11058
  }
10401
11059
  if ("next" in values && values.next != null) {
10402
- if (values.next instanceof _b || values.next instanceof Link ||
10403
- values.next instanceof URL) {
11060
+ if (values.next instanceof _b || values.next instanceof URL) {
10404
11061
  // @ts-ignore: type is checked above.
10405
11062
  this.#_3BT4kQLcXhHx7TAWaNDKh8nFn9eY = [values.next];
10406
11063
  }
10407
11064
  else {
10408
11065
  throw new TypeError("The next must be of type " +
10409
- "CollectionPage | Link | URL" + ".");
11066
+ "CollectionPage | URL" + ".");
10410
11067
  }
10411
11068
  }
10412
11069
  if ("prev" in values && values.prev != null) {
10413
- if (values.prev instanceof _b || values.prev instanceof Link ||
10414
- values.prev instanceof URL) {
11070
+ if (values.prev instanceof _b || values.prev instanceof URL) {
10415
11071
  // @ts-ignore: type is checked above.
10416
11072
  this.#_3b8yG8tDNzQFFEnWhCc13G8eHooA = [values.prev];
10417
11073
  }
10418
11074
  else {
10419
11075
  throw new TypeError("The prev must be of type " +
10420
- "CollectionPage | Link | URL" + ".");
11076
+ "CollectionPage | URL" + ".");
10421
11077
  }
10422
11078
  }
10423
11079
  }
@@ -10431,38 +11087,35 @@ export class CollectionPage extends Collection {
10431
11087
  const clone = super.clone(values, options);
10432
11088
  clone.#_2kWgBhQKjEauxx8C6qF3ZQamK4Le = this.#_2kWgBhQKjEauxx8C6qF3ZQamK4Le;
10433
11089
  if ("partOf" in values && values.partOf != null) {
10434
- if (values.partOf instanceof Link || values.partOf instanceof Collection ||
10435
- values.partOf instanceof URL) {
11090
+ if (values.partOf instanceof Collection || values.partOf instanceof URL) {
10436
11091
  // @ts-ignore: type is checked above.
10437
11092
  clone.#_2kWgBhQKjEauxx8C6qF3ZQamK4Le = [values.partOf];
10438
11093
  }
10439
11094
  else {
10440
11095
  throw new TypeError("The partOf must be of type " +
10441
- "Link | Collection | URL" + ".");
11096
+ "Collection | URL" + ".");
10442
11097
  }
10443
11098
  }
10444
11099
  clone.#_3BT4kQLcXhHx7TAWaNDKh8nFn9eY = this.#_3BT4kQLcXhHx7TAWaNDKh8nFn9eY;
10445
11100
  if ("next" in values && values.next != null) {
10446
- if (values.next instanceof _b || values.next instanceof Link ||
10447
- values.next instanceof URL) {
11101
+ if (values.next instanceof _b || values.next instanceof URL) {
10448
11102
  // @ts-ignore: type is checked above.
10449
11103
  clone.#_3BT4kQLcXhHx7TAWaNDKh8nFn9eY = [values.next];
10450
11104
  }
10451
11105
  else {
10452
11106
  throw new TypeError("The next must be of type " +
10453
- "CollectionPage | Link | URL" + ".");
11107
+ "CollectionPage | URL" + ".");
10454
11108
  }
10455
11109
  }
10456
11110
  clone.#_3b8yG8tDNzQFFEnWhCc13G8eHooA = this.#_3b8yG8tDNzQFFEnWhCc13G8eHooA;
10457
11111
  if ("prev" in values && values.prev != null) {
10458
- if (values.prev instanceof _b || values.prev instanceof Link ||
10459
- values.prev instanceof URL) {
11112
+ if (values.prev instanceof _b || values.prev instanceof URL) {
10460
11113
  // @ts-ignore: type is checked above.
10461
11114
  clone.#_3b8yG8tDNzQFFEnWhCc13G8eHooA = [values.prev];
10462
11115
  }
10463
11116
  else {
10464
11117
  throw new TypeError("The prev must be of type " +
10465
- "CollectionPage | Link | URL" + ".");
11118
+ "CollectionPage | URL" + ".");
10466
11119
  }
10467
11120
  }
10468
11121
  return clone;
@@ -10484,13 +11137,6 @@ export class CollectionPage extends Collection {
10484
11137
  throw error;
10485
11138
  }
10486
11139
  const { document } = fetchResult;
10487
- try {
10488
- return await Link.fromJsonLd(document, { documentLoader, contextLoader });
10489
- }
10490
- catch (e) {
10491
- if (!(e instanceof TypeError))
10492
- throw e;
10493
- }
10494
11140
  try {
10495
11141
  return await Collection.fromJsonLd(document, { documentLoader, contextLoader });
10496
11142
  }
@@ -10499,10 +11145,7 @@ export class CollectionPage extends Collection {
10499
11145
  throw e;
10500
11146
  }
10501
11147
  throw new TypeError("Expected an object of any type of: " +
10502
- [
10503
- "https://www.w3.org/ns/activitystreams#Link",
10504
- "https://www.w3.org/ns/activitystreams#Collection",
10505
- ].join(", "));
11148
+ ["https://www.w3.org/ns/activitystreams#Collection"].join(", "));
10506
11149
  }
10507
11150
  /**
10508
11151
  * Similar to
@@ -10557,18 +11200,8 @@ export class CollectionPage extends Collection {
10557
11200
  if (!(e instanceof TypeError))
10558
11201
  throw e;
10559
11202
  }
10560
- try {
10561
- return await Link.fromJsonLd(document, { documentLoader, contextLoader });
10562
- }
10563
- catch (e) {
10564
- if (!(e instanceof TypeError))
10565
- throw e;
10566
- }
10567
11203
  throw new TypeError("Expected an object of any type of: " +
10568
- [
10569
- "https://www.w3.org/ns/activitystreams#CollectionPage",
10570
- "https://www.w3.org/ns/activitystreams#Link",
10571
- ].join(", "));
11204
+ ["https://www.w3.org/ns/activitystreams#CollectionPage"].join(", "));
10572
11205
  }
10573
11206
  /**
10574
11207
  * Similar to
@@ -10622,18 +11255,8 @@ export class CollectionPage extends Collection {
10622
11255
  if (!(e instanceof TypeError))
10623
11256
  throw e;
10624
11257
  }
10625
- try {
10626
- return await Link.fromJsonLd(document, { documentLoader, contextLoader });
10627
- }
10628
- catch (e) {
10629
- if (!(e instanceof TypeError))
10630
- throw e;
10631
- }
10632
11258
  throw new TypeError("Expected an object of any type of: " +
10633
- [
10634
- "https://www.w3.org/ns/activitystreams#CollectionPage",
10635
- "https://www.w3.org/ns/activitystreams#Link",
10636
- ].join(", "));
11259
+ ["https://www.w3.org/ns/activitystreams#CollectionPage"].join(", "));
10637
11260
  }
10638
11261
  /**
10639
11262
  * Similar to
@@ -10683,9 +11306,7 @@ export class CollectionPage extends Collection {
10683
11306
  for (const v of this.#_2kWgBhQKjEauxx8C6qF3ZQamK4Le) {
10684
11307
  const element = v instanceof URL
10685
11308
  ? { "@id": v.href }
10686
- : v instanceof Link
10687
- ? await v.toJsonLd(options)
10688
- : await v.toJsonLd(options);
11309
+ : await v.toJsonLd(options);
10689
11310
  array.push(element);
10690
11311
  }
10691
11312
  if (array.length > 0) {
@@ -10695,9 +11316,7 @@ export class CollectionPage extends Collection {
10695
11316
  for (const v of this.#_3BT4kQLcXhHx7TAWaNDKh8nFn9eY) {
10696
11317
  const element = v instanceof URL
10697
11318
  ? { "@id": v.href }
10698
- : v instanceof _b
10699
- ? await v.toJsonLd(options)
10700
- : await v.toJsonLd(options);
11319
+ : await v.toJsonLd(options);
10701
11320
  array.push(element);
10702
11321
  }
10703
11322
  if (array.length > 0) {
@@ -10707,9 +11326,7 @@ export class CollectionPage extends Collection {
10707
11326
  for (const v of this.#_3b8yG8tDNzQFFEnWhCc13G8eHooA) {
10708
11327
  const element = v instanceof URL
10709
11328
  ? { "@id": v.href }
10710
- : v instanceof _b
10711
- ? await v.toJsonLd(options)
10712
- : await v.toJsonLd(options);
11329
+ : await v.toJsonLd(options);
10713
11330
  array.push(element);
10714
11331
  }
10715
11332
  if (array.length > 0) {
@@ -10776,27 +11393,7 @@ export class CollectionPage extends Collection {
10776
11393
  _2kWgBhQKjEauxx8C6qF3ZQamK4Le.push(new URL(v["@id"]));
10777
11394
  continue;
10778
11395
  }
10779
- const decoded = typeof v === "object" && "@type" in v &&
10780
- Array.isArray(v["@type"]) &&
10781
- [
10782
- "https://www.w3.org/ns/activitystreams#Link",
10783
- "https://www.w3.org/ns/activitystreams#Hashtag",
10784
- "https://www.w3.org/ns/activitystreams#Mention",
10785
- ].some((t) => v["@type"].includes(t))
10786
- ? await Link.fromJsonLd(v, options)
10787
- : typeof v === "object" && "@type" in v &&
10788
- Array.isArray(v["@type"]) &&
10789
- [
10790
- "https://www.w3.org/ns/activitystreams#Collection",
10791
- "https://www.w3.org/ns/activitystreams#CollectionPage",
10792
- "https://www.w3.org/ns/activitystreams#OrderedCollectionPage",
10793
- "https://www.w3.org/ns/activitystreams#OrderedCollection",
10794
- ].some((t) => v["@type"].includes(t))
10795
- ? await Collection.fromJsonLd(v, options)
10796
- : undefined;
10797
- if (typeof decoded === "undefined")
10798
- continue;
10799
- _2kWgBhQKjEauxx8C6qF3ZQamK4Le.push(decoded);
11396
+ _2kWgBhQKjEauxx8C6qF3ZQamK4Le.push(await Collection.fromJsonLd(v, options));
10800
11397
  }
10801
11398
  instance.#_2kWgBhQKjEauxx8C6qF3ZQamK4Le = _2kWgBhQKjEauxx8C6qF3ZQamK4Le;
10802
11399
  const _3BT4kQLcXhHx7TAWaNDKh8nFn9eY = [];
@@ -10808,25 +11405,7 @@ export class CollectionPage extends Collection {
10808
11405
  _3BT4kQLcXhHx7TAWaNDKh8nFn9eY.push(new URL(v["@id"]));
10809
11406
  continue;
10810
11407
  }
10811
- const decoded = typeof v === "object" && "@type" in v &&
10812
- Array.isArray(v["@type"]) &&
10813
- [
10814
- "https://www.w3.org/ns/activitystreams#CollectionPage",
10815
- "https://www.w3.org/ns/activitystreams#OrderedCollectionPage",
10816
- ].some((t) => v["@type"].includes(t))
10817
- ? await _b.fromJsonLd(v, options)
10818
- : typeof v === "object" && "@type" in v &&
10819
- Array.isArray(v["@type"]) &&
10820
- [
10821
- "https://www.w3.org/ns/activitystreams#Link",
10822
- "https://www.w3.org/ns/activitystreams#Hashtag",
10823
- "https://www.w3.org/ns/activitystreams#Mention",
10824
- ].some((t) => v["@type"].includes(t))
10825
- ? await Link.fromJsonLd(v, options)
10826
- : undefined;
10827
- if (typeof decoded === "undefined")
10828
- continue;
10829
- _3BT4kQLcXhHx7TAWaNDKh8nFn9eY.push(decoded);
11408
+ _3BT4kQLcXhHx7TAWaNDKh8nFn9eY.push(await _b.fromJsonLd(v, options));
10830
11409
  }
10831
11410
  instance.#_3BT4kQLcXhHx7TAWaNDKh8nFn9eY = _3BT4kQLcXhHx7TAWaNDKh8nFn9eY;
10832
11411
  const _3b8yG8tDNzQFFEnWhCc13G8eHooA = [];
@@ -10838,25 +11417,7 @@ export class CollectionPage extends Collection {
10838
11417
  _3b8yG8tDNzQFFEnWhCc13G8eHooA.push(new URL(v["@id"]));
10839
11418
  continue;
10840
11419
  }
10841
- const decoded = typeof v === "object" && "@type" in v &&
10842
- Array.isArray(v["@type"]) &&
10843
- [
10844
- "https://www.w3.org/ns/activitystreams#CollectionPage",
10845
- "https://www.w3.org/ns/activitystreams#OrderedCollectionPage",
10846
- ].some((t) => v["@type"].includes(t))
10847
- ? await _b.fromJsonLd(v, options)
10848
- : typeof v === "object" && "@type" in v &&
10849
- Array.isArray(v["@type"]) &&
10850
- [
10851
- "https://www.w3.org/ns/activitystreams#Link",
10852
- "https://www.w3.org/ns/activitystreams#Hashtag",
10853
- "https://www.w3.org/ns/activitystreams#Mention",
10854
- ].some((t) => v["@type"].includes(t))
10855
- ? await Link.fromJsonLd(v, options)
10856
- : undefined;
10857
- if (typeof decoded === "undefined")
10858
- continue;
10859
- _3b8yG8tDNzQFFEnWhCc13G8eHooA.push(decoded);
11420
+ _3b8yG8tDNzQFFEnWhCc13G8eHooA.push(await _b.fromJsonLd(v, options));
10860
11421
  }
10861
11422
  instance.#_3b8yG8tDNzQFFEnWhCc13G8eHooA = _3b8yG8tDNzQFFEnWhCc13G8eHooA;
10862
11423
  return instance;
@@ -12083,6 +12644,7 @@ export class Group extends Object {
12083
12644
  #_3yAv8jymNfNuJUDuBzJ1NQhdbAee = [];
12084
12645
  #_BBCTgfphhsFzpVfKTykGSpBNwoA = [];
12085
12646
  #_3bgkPwJanyTCoVFM9ovRcus8tKkU = [];
12647
+ #_4N1vBJzXDf8NbBumeECQMFvKetja = [];
12086
12648
  #_3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = [];
12087
12649
  #_sEoQwUbfk4hEfugzNQ2ZiDcLMkG = [];
12088
12650
  #_gAJzg1QDc4rcefFsUzGSYmyXvNH = [];
@@ -12241,6 +12803,16 @@ export class Group extends Object {
12241
12803
  "Collection | URL" + ".");
12242
12804
  }
12243
12805
  }
12806
+ if ("featured" in values && values.featured != null) {
12807
+ if (values.featured instanceof Collection || values.featured instanceof URL) {
12808
+ // @ts-ignore: type is checked above.
12809
+ this.#_4N1vBJzXDf8NbBumeECQMFvKetja = [values.featured];
12810
+ }
12811
+ else {
12812
+ throw new TypeError("The featured must be of type " +
12813
+ "Collection | URL" + ".");
12814
+ }
12815
+ }
12244
12816
  if ("streams" in values && values.streams != null) {
12245
12817
  if (Array.isArray(values.streams) &&
12246
12818
  values.streams.every((v) => v instanceof Collection || v instanceof URL)) {
@@ -12467,6 +13039,17 @@ export class Group extends Object {
12467
13039
  "Collection | URL" + ".");
12468
13040
  }
12469
13041
  }
13042
+ clone.#_4N1vBJzXDf8NbBumeECQMFvKetja = this.#_4N1vBJzXDf8NbBumeECQMFvKetja;
13043
+ if ("featured" in values && values.featured != null) {
13044
+ if (values.featured instanceof Collection || values.featured instanceof URL) {
13045
+ // @ts-ignore: type is checked above.
13046
+ clone.#_4N1vBJzXDf8NbBumeECQMFvKetja = [values.featured];
13047
+ }
13048
+ else {
13049
+ throw new TypeError("The featured must be of type " +
13050
+ "Collection | URL" + ".");
13051
+ }
13052
+ }
12470
13053
  clone.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = this.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9;
12471
13054
  if ("streams" in values && values.streams != null) {
12472
13055
  if (Array.isArray(values.streams) &&
@@ -13040,6 +13623,64 @@ export class Group extends Object {
13040
13623
  }
13041
13624
  return v;
13042
13625
  }
13626
+ async #fetchFeatured(url, options = {}) {
13627
+ const documentLoader = options.documentLoader ?? this._documentLoader ??
13628
+ fetchDocumentLoader;
13629
+ const contextLoader = options.contextLoader ?? this._contextLoader ??
13630
+ fetchDocumentLoader;
13631
+ let fetchResult;
13632
+ try {
13633
+ fetchResult = await documentLoader(url.href);
13634
+ }
13635
+ catch (error) {
13636
+ if (options.suppressError) {
13637
+ getLogger(["fedify", "vocab"]).error("Failed to fetch {url}: {error}", { error, url: url.href });
13638
+ return null;
13639
+ }
13640
+ throw error;
13641
+ }
13642
+ const { document } = fetchResult;
13643
+ try {
13644
+ return await Collection.fromJsonLd(document, { documentLoader, contextLoader });
13645
+ }
13646
+ catch (e) {
13647
+ if (!(e instanceof TypeError))
13648
+ throw e;
13649
+ }
13650
+ throw new TypeError("Expected an object of any type of: " +
13651
+ ["https://www.w3.org/ns/activitystreams#Collection"].join(", "));
13652
+ }
13653
+ /**
13654
+ * Similar to
13655
+ * {@link Group.getFeatured},
13656
+ * but returns its `@id` URL instead of the object itself.
13657
+ */
13658
+ get featuredId() {
13659
+ if (this.#_4N1vBJzXDf8NbBumeECQMFvKetja.length < 1)
13660
+ return null;
13661
+ const v = this.#_4N1vBJzXDf8NbBumeECQMFvKetja[0];
13662
+ if (v instanceof URL)
13663
+ return v;
13664
+ return v.id;
13665
+ }
13666
+ /** What is known in Mastodon as "pinned statuses", or statuses that are always
13667
+ * featured at the top of people's profiles, is implemented using an extra
13668
+ * property `featured` on the actor object that points to a {@link Collection}
13669
+ * of objects.
13670
+ */
13671
+ async getFeatured(options = {}) {
13672
+ if (this.#_4N1vBJzXDf8NbBumeECQMFvKetja.length < 1)
13673
+ return null;
13674
+ const v = this.#_4N1vBJzXDf8NbBumeECQMFvKetja[0];
13675
+ if (v instanceof URL) {
13676
+ const fetched = await this.#fetchFeatured(v, options);
13677
+ if (fetched == null)
13678
+ return null;
13679
+ this.#_4N1vBJzXDf8NbBumeECQMFvKetja[0] = fetched;
13680
+ return fetched;
13681
+ }
13682
+ return v;
13683
+ }
13043
13684
  async #fetchStream(url, options = {}) {
13044
13685
  const documentLoader = options.documentLoader ?? this._documentLoader ??
13045
13686
  fetchDocumentLoader;
@@ -13238,6 +13879,15 @@ export class Group extends Object {
13238
13879
  values["https://www.w3.org/ns/activitystreams#liked"] = array;
13239
13880
  }
13240
13881
  array = [];
13882
+ for (const v of this.#_4N1vBJzXDf8NbBumeECQMFvKetja) {
13883
+ const element = v instanceof URL
13884
+ ? { "@id": v.href }
13885
+ : await v.toJsonLd(options);
13886
+ array.push(element);
13887
+ }
13888
+ if (array.length > 0)
13889
+ values["http://joinmastodon.org/ns#featured"] = array;
13890
+ array = [];
13241
13891
  for (const v of this.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9) {
13242
13892
  const element = v instanceof URL
13243
13893
  ? { "@id": v.href }
@@ -13302,6 +13952,7 @@ export class Group extends Object {
13302
13952
  {
13303
13953
  "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
13304
13954
  "toot": "http://joinmastodon.org/ns#",
13955
+ "featured": { "@id": "toot:featured", "@type": "@id" },
13305
13956
  "discoverable": "toot:discoverable",
13306
13957
  "suspended": "toot:suspended",
13307
13958
  "memorial": "toot:memorial",
@@ -13461,6 +14112,18 @@ export class Group extends Object {
13461
14112
  _3bgkPwJanyTCoVFM9ovRcus8tKkU.push(await Collection.fromJsonLd(v, options));
13462
14113
  }
13463
14114
  instance.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = _3bgkPwJanyTCoVFM9ovRcus8tKkU;
14115
+ const _4N1vBJzXDf8NbBumeECQMFvKetja = [];
14116
+ for (const v of values["http://joinmastodon.org/ns#featured"] ?? []) {
14117
+ if (v == null)
14118
+ continue;
14119
+ if (typeof v === "object" && "@id" in v && !("@type" in v) &&
14120
+ globalThis.Object.keys(v).length === 1) {
14121
+ _4N1vBJzXDf8NbBumeECQMFvKetja.push(new URL(v["@id"]));
14122
+ continue;
14123
+ }
14124
+ _4N1vBJzXDf8NbBumeECQMFvKetja.push(await Collection.fromJsonLd(v, options));
14125
+ }
14126
+ instance.#_4N1vBJzXDf8NbBumeECQMFvKetja = _4N1vBJzXDf8NbBumeECQMFvKetja;
13464
14127
  const _3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = [];
13465
14128
  for (const v of values["https://www.w3.org/ns/activitystreams#streams"] ?? []) {
13466
14129
  if (v == null)
@@ -13626,6 +14289,17 @@ export class Group extends Object {
13626
14289
  if (_3bgkPwJanyTCoVFM9ovRcus8tKkU.length == 1) {
13627
14290
  proxy.liked = _3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
13628
14291
  }
14292
+ const _4N1vBJzXDf8NbBumeECQMFvKetja = this.#_4N1vBJzXDf8NbBumeECQMFvKetja
14293
+ // deno-lint-ignore no-explicit-any
14294
+ .map((v) => v instanceof URL
14295
+ ? {
14296
+ [Symbol.for("Deno.customInspect")]: (inspect, options) => "URL " + inspect(v.href, options),
14297
+ [Symbol.for("nodejs.util.inspect.custom")]: (_depth, options, inspect) => "URL " + inspect(v.href, options),
14298
+ }
14299
+ : v);
14300
+ if (_4N1vBJzXDf8NbBumeECQMFvKetja.length == 1) {
14301
+ proxy.featured = _4N1vBJzXDf8NbBumeECQMFvKetja[0];
14302
+ }
13629
14303
  const _3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = this.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9
13630
14304
  // deno-lint-ignore no-explicit-any
13631
14305
  .map((v) => v instanceof URL
@@ -15495,6 +16169,7 @@ export class Organization extends Object {
15495
16169
  #_3yAv8jymNfNuJUDuBzJ1NQhdbAee = [];
15496
16170
  #_BBCTgfphhsFzpVfKTykGSpBNwoA = [];
15497
16171
  #_3bgkPwJanyTCoVFM9ovRcus8tKkU = [];
16172
+ #_4N1vBJzXDf8NbBumeECQMFvKetja = [];
15498
16173
  #_3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = [];
15499
16174
  #_sEoQwUbfk4hEfugzNQ2ZiDcLMkG = [];
15500
16175
  #_gAJzg1QDc4rcefFsUzGSYmyXvNH = [];
@@ -15653,6 +16328,16 @@ export class Organization extends Object {
15653
16328
  "Collection | URL" + ".");
15654
16329
  }
15655
16330
  }
16331
+ if ("featured" in values && values.featured != null) {
16332
+ if (values.featured instanceof Collection || values.featured instanceof URL) {
16333
+ // @ts-ignore: type is checked above.
16334
+ this.#_4N1vBJzXDf8NbBumeECQMFvKetja = [values.featured];
16335
+ }
16336
+ else {
16337
+ throw new TypeError("The featured must be of type " +
16338
+ "Collection | URL" + ".");
16339
+ }
16340
+ }
15656
16341
  if ("streams" in values && values.streams != null) {
15657
16342
  if (Array.isArray(values.streams) &&
15658
16343
  values.streams.every((v) => v instanceof Collection || v instanceof URL)) {
@@ -15879,6 +16564,17 @@ export class Organization extends Object {
15879
16564
  "Collection | URL" + ".");
15880
16565
  }
15881
16566
  }
16567
+ clone.#_4N1vBJzXDf8NbBumeECQMFvKetja = this.#_4N1vBJzXDf8NbBumeECQMFvKetja;
16568
+ if ("featured" in values && values.featured != null) {
16569
+ if (values.featured instanceof Collection || values.featured instanceof URL) {
16570
+ // @ts-ignore: type is checked above.
16571
+ clone.#_4N1vBJzXDf8NbBumeECQMFvKetja = [values.featured];
16572
+ }
16573
+ else {
16574
+ throw new TypeError("The featured must be of type " +
16575
+ "Collection | URL" + ".");
16576
+ }
16577
+ }
15882
16578
  clone.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = this.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9;
15883
16579
  if ("streams" in values && values.streams != null) {
15884
16580
  if (Array.isArray(values.streams) &&
@@ -16452,6 +17148,64 @@ export class Organization extends Object {
16452
17148
  }
16453
17149
  return v;
16454
17150
  }
17151
+ async #fetchFeatured(url, options = {}) {
17152
+ const documentLoader = options.documentLoader ?? this._documentLoader ??
17153
+ fetchDocumentLoader;
17154
+ const contextLoader = options.contextLoader ?? this._contextLoader ??
17155
+ fetchDocumentLoader;
17156
+ let fetchResult;
17157
+ try {
17158
+ fetchResult = await documentLoader(url.href);
17159
+ }
17160
+ catch (error) {
17161
+ if (options.suppressError) {
17162
+ getLogger(["fedify", "vocab"]).error("Failed to fetch {url}: {error}", { error, url: url.href });
17163
+ return null;
17164
+ }
17165
+ throw error;
17166
+ }
17167
+ const { document } = fetchResult;
17168
+ try {
17169
+ return await Collection.fromJsonLd(document, { documentLoader, contextLoader });
17170
+ }
17171
+ catch (e) {
17172
+ if (!(e instanceof TypeError))
17173
+ throw e;
17174
+ }
17175
+ throw new TypeError("Expected an object of any type of: " +
17176
+ ["https://www.w3.org/ns/activitystreams#Collection"].join(", "));
17177
+ }
17178
+ /**
17179
+ * Similar to
17180
+ * {@link Organization.getFeatured},
17181
+ * but returns its `@id` URL instead of the object itself.
17182
+ */
17183
+ get featuredId() {
17184
+ if (this.#_4N1vBJzXDf8NbBumeECQMFvKetja.length < 1)
17185
+ return null;
17186
+ const v = this.#_4N1vBJzXDf8NbBumeECQMFvKetja[0];
17187
+ if (v instanceof URL)
17188
+ return v;
17189
+ return v.id;
17190
+ }
17191
+ /** What is known in Mastodon as "pinned statuses", or statuses that are always
17192
+ * featured at the top of people's profiles, is implemented using an extra
17193
+ * property `featured` on the actor object that points to a {@link Collection}
17194
+ * of objects.
17195
+ */
17196
+ async getFeatured(options = {}) {
17197
+ if (this.#_4N1vBJzXDf8NbBumeECQMFvKetja.length < 1)
17198
+ return null;
17199
+ const v = this.#_4N1vBJzXDf8NbBumeECQMFvKetja[0];
17200
+ if (v instanceof URL) {
17201
+ const fetched = await this.#fetchFeatured(v, options);
17202
+ if (fetched == null)
17203
+ return null;
17204
+ this.#_4N1vBJzXDf8NbBumeECQMFvKetja[0] = fetched;
17205
+ return fetched;
17206
+ }
17207
+ return v;
17208
+ }
16455
17209
  async #fetchStream(url, options = {}) {
16456
17210
  const documentLoader = options.documentLoader ?? this._documentLoader ??
16457
17211
  fetchDocumentLoader;
@@ -16650,6 +17404,15 @@ export class Organization extends Object {
16650
17404
  values["https://www.w3.org/ns/activitystreams#liked"] = array;
16651
17405
  }
16652
17406
  array = [];
17407
+ for (const v of this.#_4N1vBJzXDf8NbBumeECQMFvKetja) {
17408
+ const element = v instanceof URL
17409
+ ? { "@id": v.href }
17410
+ : await v.toJsonLd(options);
17411
+ array.push(element);
17412
+ }
17413
+ if (array.length > 0)
17414
+ values["http://joinmastodon.org/ns#featured"] = array;
17415
+ array = [];
16653
17416
  for (const v of this.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9) {
16654
17417
  const element = v instanceof URL
16655
17418
  ? { "@id": v.href }
@@ -16714,6 +17477,7 @@ export class Organization extends Object {
16714
17477
  {
16715
17478
  "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
16716
17479
  "toot": "http://joinmastodon.org/ns#",
17480
+ "featured": { "@id": "toot:featured", "@type": "@id" },
16717
17481
  "discoverable": "toot:discoverable",
16718
17482
  "suspended": "toot:suspended",
16719
17483
  "memorial": "toot:memorial",
@@ -16873,6 +17637,18 @@ export class Organization extends Object {
16873
17637
  _3bgkPwJanyTCoVFM9ovRcus8tKkU.push(await Collection.fromJsonLd(v, options));
16874
17638
  }
16875
17639
  instance.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = _3bgkPwJanyTCoVFM9ovRcus8tKkU;
17640
+ const _4N1vBJzXDf8NbBumeECQMFvKetja = [];
17641
+ for (const v of values["http://joinmastodon.org/ns#featured"] ?? []) {
17642
+ if (v == null)
17643
+ continue;
17644
+ if (typeof v === "object" && "@id" in v && !("@type" in v) &&
17645
+ globalThis.Object.keys(v).length === 1) {
17646
+ _4N1vBJzXDf8NbBumeECQMFvKetja.push(new URL(v["@id"]));
17647
+ continue;
17648
+ }
17649
+ _4N1vBJzXDf8NbBumeECQMFvKetja.push(await Collection.fromJsonLd(v, options));
17650
+ }
17651
+ instance.#_4N1vBJzXDf8NbBumeECQMFvKetja = _4N1vBJzXDf8NbBumeECQMFvKetja;
16876
17652
  const _3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = [];
16877
17653
  for (const v of values["https://www.w3.org/ns/activitystreams#streams"] ?? []) {
16878
17654
  if (v == null)
@@ -17038,6 +17814,17 @@ export class Organization extends Object {
17038
17814
  if (_3bgkPwJanyTCoVFM9ovRcus8tKkU.length == 1) {
17039
17815
  proxy.liked = _3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
17040
17816
  }
17817
+ const _4N1vBJzXDf8NbBumeECQMFvKetja = this.#_4N1vBJzXDf8NbBumeECQMFvKetja
17818
+ // deno-lint-ignore no-explicit-any
17819
+ .map((v) => v instanceof URL
17820
+ ? {
17821
+ [Symbol.for("Deno.customInspect")]: (inspect, options) => "URL " + inspect(v.href, options),
17822
+ [Symbol.for("nodejs.util.inspect.custom")]: (_depth, options, inspect) => "URL " + inspect(v.href, options),
17823
+ }
17824
+ : v);
17825
+ if (_4N1vBJzXDf8NbBumeECQMFvKetja.length == 1) {
17826
+ proxy.featured = _4N1vBJzXDf8NbBumeECQMFvKetja[0];
17827
+ }
17041
17828
  const _3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = this.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9
17042
17829
  // deno-lint-ignore no-explicit-any
17043
17830
  .map((v) => v instanceof URL
@@ -17245,6 +18032,7 @@ export class Person extends Object {
17245
18032
  #_3yAv8jymNfNuJUDuBzJ1NQhdbAee = [];
17246
18033
  #_BBCTgfphhsFzpVfKTykGSpBNwoA = [];
17247
18034
  #_3bgkPwJanyTCoVFM9ovRcus8tKkU = [];
18035
+ #_4N1vBJzXDf8NbBumeECQMFvKetja = [];
17248
18036
  #_3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = [];
17249
18037
  #_sEoQwUbfk4hEfugzNQ2ZiDcLMkG = [];
17250
18038
  #_gAJzg1QDc4rcefFsUzGSYmyXvNH = [];
@@ -17403,6 +18191,16 @@ export class Person extends Object {
17403
18191
  "Collection | URL" + ".");
17404
18192
  }
17405
18193
  }
18194
+ if ("featured" in values && values.featured != null) {
18195
+ if (values.featured instanceof Collection || values.featured instanceof URL) {
18196
+ // @ts-ignore: type is checked above.
18197
+ this.#_4N1vBJzXDf8NbBumeECQMFvKetja = [values.featured];
18198
+ }
18199
+ else {
18200
+ throw new TypeError("The featured must be of type " +
18201
+ "Collection | URL" + ".");
18202
+ }
18203
+ }
17406
18204
  if ("streams" in values && values.streams != null) {
17407
18205
  if (Array.isArray(values.streams) &&
17408
18206
  values.streams.every((v) => v instanceof Collection || v instanceof URL)) {
@@ -17629,6 +18427,17 @@ export class Person extends Object {
17629
18427
  "Collection | URL" + ".");
17630
18428
  }
17631
18429
  }
18430
+ clone.#_4N1vBJzXDf8NbBumeECQMFvKetja = this.#_4N1vBJzXDf8NbBumeECQMFvKetja;
18431
+ if ("featured" in values && values.featured != null) {
18432
+ if (values.featured instanceof Collection || values.featured instanceof URL) {
18433
+ // @ts-ignore: type is checked above.
18434
+ clone.#_4N1vBJzXDf8NbBumeECQMFvKetja = [values.featured];
18435
+ }
18436
+ else {
18437
+ throw new TypeError("The featured must be of type " +
18438
+ "Collection | URL" + ".");
18439
+ }
18440
+ }
17632
18441
  clone.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = this.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9;
17633
18442
  if ("streams" in values && values.streams != null) {
17634
18443
  if (Array.isArray(values.streams) &&
@@ -18202,6 +19011,64 @@ export class Person extends Object {
18202
19011
  }
18203
19012
  return v;
18204
19013
  }
19014
+ async #fetchFeatured(url, options = {}) {
19015
+ const documentLoader = options.documentLoader ?? this._documentLoader ??
19016
+ fetchDocumentLoader;
19017
+ const contextLoader = options.contextLoader ?? this._contextLoader ??
19018
+ fetchDocumentLoader;
19019
+ let fetchResult;
19020
+ try {
19021
+ fetchResult = await documentLoader(url.href);
19022
+ }
19023
+ catch (error) {
19024
+ if (options.suppressError) {
19025
+ getLogger(["fedify", "vocab"]).error("Failed to fetch {url}: {error}", { error, url: url.href });
19026
+ return null;
19027
+ }
19028
+ throw error;
19029
+ }
19030
+ const { document } = fetchResult;
19031
+ try {
19032
+ return await Collection.fromJsonLd(document, { documentLoader, contextLoader });
19033
+ }
19034
+ catch (e) {
19035
+ if (!(e instanceof TypeError))
19036
+ throw e;
19037
+ }
19038
+ throw new TypeError("Expected an object of any type of: " +
19039
+ ["https://www.w3.org/ns/activitystreams#Collection"].join(", "));
19040
+ }
19041
+ /**
19042
+ * Similar to
19043
+ * {@link Person.getFeatured},
19044
+ * but returns its `@id` URL instead of the object itself.
19045
+ */
19046
+ get featuredId() {
19047
+ if (this.#_4N1vBJzXDf8NbBumeECQMFvKetja.length < 1)
19048
+ return null;
19049
+ const v = this.#_4N1vBJzXDf8NbBumeECQMFvKetja[0];
19050
+ if (v instanceof URL)
19051
+ return v;
19052
+ return v.id;
19053
+ }
19054
+ /** What is known in Mastodon as "pinned statuses", or statuses that are always
19055
+ * featured at the top of people's profiles, is implemented using an extra
19056
+ * property `featured` on the actor object that points to a {@link Collection}
19057
+ * of objects.
19058
+ */
19059
+ async getFeatured(options = {}) {
19060
+ if (this.#_4N1vBJzXDf8NbBumeECQMFvKetja.length < 1)
19061
+ return null;
19062
+ const v = this.#_4N1vBJzXDf8NbBumeECQMFvKetja[0];
19063
+ if (v instanceof URL) {
19064
+ const fetched = await this.#fetchFeatured(v, options);
19065
+ if (fetched == null)
19066
+ return null;
19067
+ this.#_4N1vBJzXDf8NbBumeECQMFvKetja[0] = fetched;
19068
+ return fetched;
19069
+ }
19070
+ return v;
19071
+ }
18205
19072
  async #fetchStream(url, options = {}) {
18206
19073
  const documentLoader = options.documentLoader ?? this._documentLoader ??
18207
19074
  fetchDocumentLoader;
@@ -18400,6 +19267,15 @@ export class Person extends Object {
18400
19267
  values["https://www.w3.org/ns/activitystreams#liked"] = array;
18401
19268
  }
18402
19269
  array = [];
19270
+ for (const v of this.#_4N1vBJzXDf8NbBumeECQMFvKetja) {
19271
+ const element = v instanceof URL
19272
+ ? { "@id": v.href }
19273
+ : await v.toJsonLd(options);
19274
+ array.push(element);
19275
+ }
19276
+ if (array.length > 0)
19277
+ values["http://joinmastodon.org/ns#featured"] = array;
19278
+ array = [];
18403
19279
  for (const v of this.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9) {
18404
19280
  const element = v instanceof URL
18405
19281
  ? { "@id": v.href }
@@ -18464,6 +19340,7 @@ export class Person extends Object {
18464
19340
  {
18465
19341
  "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
18466
19342
  "toot": "http://joinmastodon.org/ns#",
19343
+ "featured": { "@id": "toot:featured", "@type": "@id" },
18467
19344
  "discoverable": "toot:discoverable",
18468
19345
  "suspended": "toot:suspended",
18469
19346
  "memorial": "toot:memorial",
@@ -18623,6 +19500,18 @@ export class Person extends Object {
18623
19500
  _3bgkPwJanyTCoVFM9ovRcus8tKkU.push(await Collection.fromJsonLd(v, options));
18624
19501
  }
18625
19502
  instance.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = _3bgkPwJanyTCoVFM9ovRcus8tKkU;
19503
+ const _4N1vBJzXDf8NbBumeECQMFvKetja = [];
19504
+ for (const v of values["http://joinmastodon.org/ns#featured"] ?? []) {
19505
+ if (v == null)
19506
+ continue;
19507
+ if (typeof v === "object" && "@id" in v && !("@type" in v) &&
19508
+ globalThis.Object.keys(v).length === 1) {
19509
+ _4N1vBJzXDf8NbBumeECQMFvKetja.push(new URL(v["@id"]));
19510
+ continue;
19511
+ }
19512
+ _4N1vBJzXDf8NbBumeECQMFvKetja.push(await Collection.fromJsonLd(v, options));
19513
+ }
19514
+ instance.#_4N1vBJzXDf8NbBumeECQMFvKetja = _4N1vBJzXDf8NbBumeECQMFvKetja;
18626
19515
  const _3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = [];
18627
19516
  for (const v of values["https://www.w3.org/ns/activitystreams#streams"] ?? []) {
18628
19517
  if (v == null)
@@ -18788,6 +19677,17 @@ export class Person extends Object {
18788
19677
  if (_3bgkPwJanyTCoVFM9ovRcus8tKkU.length == 1) {
18789
19678
  proxy.liked = _3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
18790
19679
  }
19680
+ const _4N1vBJzXDf8NbBumeECQMFvKetja = this.#_4N1vBJzXDf8NbBumeECQMFvKetja
19681
+ // deno-lint-ignore no-explicit-any
19682
+ .map((v) => v instanceof URL
19683
+ ? {
19684
+ [Symbol.for("Deno.customInspect")]: (inspect, options) => "URL " + inspect(v.href, options),
19685
+ [Symbol.for("nodejs.util.inspect.custom")]: (_depth, options, inspect) => "URL " + inspect(v.href, options),
19686
+ }
19687
+ : v);
19688
+ if (_4N1vBJzXDf8NbBumeECQMFvKetja.length == 1) {
19689
+ proxy.featured = _4N1vBJzXDf8NbBumeECQMFvKetja[0];
19690
+ }
18791
19691
  const _3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = this.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9
18792
19692
  // deno-lint-ignore no-explicit-any
18793
19693
  .map((v) => v instanceof URL
@@ -20745,6 +21645,7 @@ export class Service extends Object {
20745
21645
  #_3yAv8jymNfNuJUDuBzJ1NQhdbAee = [];
20746
21646
  #_BBCTgfphhsFzpVfKTykGSpBNwoA = [];
20747
21647
  #_3bgkPwJanyTCoVFM9ovRcus8tKkU = [];
21648
+ #_4N1vBJzXDf8NbBumeECQMFvKetja = [];
20748
21649
  #_3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = [];
20749
21650
  #_sEoQwUbfk4hEfugzNQ2ZiDcLMkG = [];
20750
21651
  #_gAJzg1QDc4rcefFsUzGSYmyXvNH = [];
@@ -20903,6 +21804,16 @@ export class Service extends Object {
20903
21804
  "Collection | URL" + ".");
20904
21805
  }
20905
21806
  }
21807
+ if ("featured" in values && values.featured != null) {
21808
+ if (values.featured instanceof Collection || values.featured instanceof URL) {
21809
+ // @ts-ignore: type is checked above.
21810
+ this.#_4N1vBJzXDf8NbBumeECQMFvKetja = [values.featured];
21811
+ }
21812
+ else {
21813
+ throw new TypeError("The featured must be of type " +
21814
+ "Collection | URL" + ".");
21815
+ }
21816
+ }
20906
21817
  if ("streams" in values && values.streams != null) {
20907
21818
  if (Array.isArray(values.streams) &&
20908
21819
  values.streams.every((v) => v instanceof Collection || v instanceof URL)) {
@@ -21129,6 +22040,17 @@ export class Service extends Object {
21129
22040
  "Collection | URL" + ".");
21130
22041
  }
21131
22042
  }
22043
+ clone.#_4N1vBJzXDf8NbBumeECQMFvKetja = this.#_4N1vBJzXDf8NbBumeECQMFvKetja;
22044
+ if ("featured" in values && values.featured != null) {
22045
+ if (values.featured instanceof Collection || values.featured instanceof URL) {
22046
+ // @ts-ignore: type is checked above.
22047
+ clone.#_4N1vBJzXDf8NbBumeECQMFvKetja = [values.featured];
22048
+ }
22049
+ else {
22050
+ throw new TypeError("The featured must be of type " +
22051
+ "Collection | URL" + ".");
22052
+ }
22053
+ }
21132
22054
  clone.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = this.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9;
21133
22055
  if ("streams" in values && values.streams != null) {
21134
22056
  if (Array.isArray(values.streams) &&
@@ -21702,6 +22624,64 @@ export class Service extends Object {
21702
22624
  }
21703
22625
  return v;
21704
22626
  }
22627
+ async #fetchFeatured(url, options = {}) {
22628
+ const documentLoader = options.documentLoader ?? this._documentLoader ??
22629
+ fetchDocumentLoader;
22630
+ const contextLoader = options.contextLoader ?? this._contextLoader ??
22631
+ fetchDocumentLoader;
22632
+ let fetchResult;
22633
+ try {
22634
+ fetchResult = await documentLoader(url.href);
22635
+ }
22636
+ catch (error) {
22637
+ if (options.suppressError) {
22638
+ getLogger(["fedify", "vocab"]).error("Failed to fetch {url}: {error}", { error, url: url.href });
22639
+ return null;
22640
+ }
22641
+ throw error;
22642
+ }
22643
+ const { document } = fetchResult;
22644
+ try {
22645
+ return await Collection.fromJsonLd(document, { documentLoader, contextLoader });
22646
+ }
22647
+ catch (e) {
22648
+ if (!(e instanceof TypeError))
22649
+ throw e;
22650
+ }
22651
+ throw new TypeError("Expected an object of any type of: " +
22652
+ ["https://www.w3.org/ns/activitystreams#Collection"].join(", "));
22653
+ }
22654
+ /**
22655
+ * Similar to
22656
+ * {@link Service.getFeatured},
22657
+ * but returns its `@id` URL instead of the object itself.
22658
+ */
22659
+ get featuredId() {
22660
+ if (this.#_4N1vBJzXDf8NbBumeECQMFvKetja.length < 1)
22661
+ return null;
22662
+ const v = this.#_4N1vBJzXDf8NbBumeECQMFvKetja[0];
22663
+ if (v instanceof URL)
22664
+ return v;
22665
+ return v.id;
22666
+ }
22667
+ /** What is known in Mastodon as "pinned statuses", or statuses that are always
22668
+ * featured at the top of people's profiles, is implemented using an extra
22669
+ * property `featured` on the actor object that points to a {@link Collection}
22670
+ * of objects.
22671
+ */
22672
+ async getFeatured(options = {}) {
22673
+ if (this.#_4N1vBJzXDf8NbBumeECQMFvKetja.length < 1)
22674
+ return null;
22675
+ const v = this.#_4N1vBJzXDf8NbBumeECQMFvKetja[0];
22676
+ if (v instanceof URL) {
22677
+ const fetched = await this.#fetchFeatured(v, options);
22678
+ if (fetched == null)
22679
+ return null;
22680
+ this.#_4N1vBJzXDf8NbBumeECQMFvKetja[0] = fetched;
22681
+ return fetched;
22682
+ }
22683
+ return v;
22684
+ }
21705
22685
  async #fetchStream(url, options = {}) {
21706
22686
  const documentLoader = options.documentLoader ?? this._documentLoader ??
21707
22687
  fetchDocumentLoader;
@@ -21900,6 +22880,15 @@ export class Service extends Object {
21900
22880
  values["https://www.w3.org/ns/activitystreams#liked"] = array;
21901
22881
  }
21902
22882
  array = [];
22883
+ for (const v of this.#_4N1vBJzXDf8NbBumeECQMFvKetja) {
22884
+ const element = v instanceof URL
22885
+ ? { "@id": v.href }
22886
+ : await v.toJsonLd(options);
22887
+ array.push(element);
22888
+ }
22889
+ if (array.length > 0)
22890
+ values["http://joinmastodon.org/ns#featured"] = array;
22891
+ array = [];
21903
22892
  for (const v of this.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9) {
21904
22893
  const element = v instanceof URL
21905
22894
  ? { "@id": v.href }
@@ -21964,6 +22953,7 @@ export class Service extends Object {
21964
22953
  {
21965
22954
  "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
21966
22955
  "toot": "http://joinmastodon.org/ns#",
22956
+ "featured": { "@id": "toot:featured", "@type": "@id" },
21967
22957
  "discoverable": "toot:discoverable",
21968
22958
  "suspended": "toot:suspended",
21969
22959
  "memorial": "toot:memorial",
@@ -22123,6 +23113,18 @@ export class Service extends Object {
22123
23113
  _3bgkPwJanyTCoVFM9ovRcus8tKkU.push(await Collection.fromJsonLd(v, options));
22124
23114
  }
22125
23115
  instance.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = _3bgkPwJanyTCoVFM9ovRcus8tKkU;
23116
+ const _4N1vBJzXDf8NbBumeECQMFvKetja = [];
23117
+ for (const v of values["http://joinmastodon.org/ns#featured"] ?? []) {
23118
+ if (v == null)
23119
+ continue;
23120
+ if (typeof v === "object" && "@id" in v && !("@type" in v) &&
23121
+ globalThis.Object.keys(v).length === 1) {
23122
+ _4N1vBJzXDf8NbBumeECQMFvKetja.push(new URL(v["@id"]));
23123
+ continue;
23124
+ }
23125
+ _4N1vBJzXDf8NbBumeECQMFvKetja.push(await Collection.fromJsonLd(v, options));
23126
+ }
23127
+ instance.#_4N1vBJzXDf8NbBumeECQMFvKetja = _4N1vBJzXDf8NbBumeECQMFvKetja;
22126
23128
  const _3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = [];
22127
23129
  for (const v of values["https://www.w3.org/ns/activitystreams#streams"] ?? []) {
22128
23130
  if (v == null)
@@ -22288,6 +23290,17 @@ export class Service extends Object {
22288
23290
  if (_3bgkPwJanyTCoVFM9ovRcus8tKkU.length == 1) {
22289
23291
  proxy.liked = _3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
22290
23292
  }
23293
+ const _4N1vBJzXDf8NbBumeECQMFvKetja = this.#_4N1vBJzXDf8NbBumeECQMFvKetja
23294
+ // deno-lint-ignore no-explicit-any
23295
+ .map((v) => v instanceof URL
23296
+ ? {
23297
+ [Symbol.for("Deno.customInspect")]: (inspect, options) => "URL " + inspect(v.href, options),
23298
+ [Symbol.for("nodejs.util.inspect.custom")]: (_depth, options, inspect) => "URL " + inspect(v.href, options),
23299
+ }
23300
+ : v);
23301
+ if (_4N1vBJzXDf8NbBumeECQMFvKetja.length == 1) {
23302
+ proxy.featured = _4N1vBJzXDf8NbBumeECQMFvKetja[0];
23303
+ }
22291
23304
  const _3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = this.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9
22292
23305
  // deno-lint-ignore no-explicit-any
22293
23306
  .map((v) => v instanceof URL