@atproto/api 0.6.6 → 0.6.8

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.
@@ -1,5 +1,6 @@
1
1
  import { AtpAgent } from './agent';
2
2
  import { AppBskyFeedPost, AppBskyActorProfile } from './client';
3
+ import { BskyPreferences, BskyLabelPreference } from './types';
3
4
  export declare class BskyAgent extends AtpAgent {
4
5
  get app(): import("./client").AppNS;
5
6
  getTimeline: typeof this.api.app.bsky.feed.getTimeline;
@@ -43,4 +44,27 @@ export declare class BskyAgent extends AtpAgent {
43
44
  mute(actor: string): Promise<import("./client/types/app/bsky/graph/muteActor").Response>;
44
45
  unmute(actor: string): Promise<import("./client/types/app/bsky/graph/unmuteActor").Response>;
45
46
  updateSeenNotifications(seenAt?: string): Promise<import("./client/types/app/bsky/notification/updateSeen").Response>;
47
+ getPreferences(): Promise<BskyPreferences>;
48
+ setSavedFeeds(saved: string[], pinned: string[]): Promise<{
49
+ saved: string[];
50
+ pinned: string[];
51
+ }>;
52
+ addSavedFeed(v: string): Promise<{
53
+ saved: string[];
54
+ pinned: string[];
55
+ }>;
56
+ removeSavedFeed(v: string): Promise<{
57
+ saved: string[];
58
+ pinned: string[];
59
+ }>;
60
+ addPinnedFeed(v: string): Promise<{
61
+ saved: string[];
62
+ pinned: string[];
63
+ }>;
64
+ removePinnedFeed(v: string): Promise<{
65
+ saved: string[];
66
+ pinned: string[];
67
+ }>;
68
+ setAdultContentEnabled(v: boolean): Promise<void>;
69
+ setContentLabelPref(key: string, value: BskyLabelPreference): Promise<void>;
46
70
  }
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { AtUri } from '@atproto/uri';
1
+ export { AtUri } from '@atproto/syntax';
2
2
  export { BlobRef, lexToJson, stringifyLex, jsonToLex, jsonStringToLex, } from '@atproto/lexicon';
3
3
  export { parseLanguage } from '@atproto/common-web';
4
4
  export * from './types';
package/dist/index.js CHANGED
@@ -8870,8 +8870,8 @@ var require_dist = __commonJS({
8870
8870
  });
8871
8871
 
8872
8872
  // src/index.ts
8873
- var src_exports4 = {};
8874
- __export(src_exports4, {
8873
+ var src_exports2 = {};
8874
+ __export(src_exports2, {
8875
8875
  APP_BSKY_GRAPH: () => APP_BSKY_GRAPH,
8876
8876
  ActorNS: () => ActorNS,
8877
8877
  AdminNS: () => AdminNS,
@@ -9047,9 +9047,9 @@ __export(src_exports4, {
9047
9047
  sanitizeRichText: () => sanitizeRichText,
9048
9048
  stringifyLex: () => stringifyLex
9049
9049
  });
9050
- module.exports = __toCommonJS(src_exports4);
9050
+ module.exports = __toCommonJS(src_exports2);
9051
9051
 
9052
- // ../identifier/src/handle.ts
9052
+ // ../syntax/src/handle.ts
9053
9053
  var ensureValidHandle = (handle2) => {
9054
9054
  if (!/^[a-zA-Z0-9.-]*$/.test(handle2)) {
9055
9055
  throw new InvalidHandleError(
@@ -9086,7 +9086,7 @@ var ensureValidHandle = (handle2) => {
9086
9086
  var InvalidHandleError = class extends Error {
9087
9087
  };
9088
9088
 
9089
- // ../identifier/src/did.ts
9089
+ // ../syntax/src/did.ts
9090
9090
  var ensureValidDid = (did2) => {
9091
9091
  if (!/^[a-zA-Z0-9._:%-]*$/.test(did2)) {
9092
9092
  throw new InvalidDidError(
@@ -9115,7 +9115,7 @@ var ensureValidDid = (did2) => {
9115
9115
  var InvalidDidError = class extends Error {
9116
9116
  };
9117
9117
 
9118
- // ../nsid/src/index.ts
9118
+ // ../syntax/src/nsid.ts
9119
9119
  var NSID = class {
9120
9120
  constructor(nsid2) {
9121
9121
  this.segments = [];
@@ -9183,7 +9183,7 @@ var ensureValidNsid = (nsid2) => {
9183
9183
  var InvalidNsidError = class extends Error {
9184
9184
  };
9185
9185
 
9186
- // ../uri/src/validation.ts
9186
+ // ../syntax/src/aturi_validation.ts
9187
9187
  var ensureValidAtUri = (uri2) => {
9188
9188
  const uriParts = uri2.split("#");
9189
9189
  if (uriParts.length > 2) {
@@ -9252,7 +9252,7 @@ var ensureValidAtUri = (uri2) => {
9252
9252
  }
9253
9253
  };
9254
9254
 
9255
- // ../uri/src/index.ts
9255
+ // ../syntax/src/aturi.ts
9256
9256
  var ATP_URI_REGEX = /^(at:\/\/)?((?:did:[a-z0-9:%-]+)|(?:[a-z0-9][a-z0-9.:-]*))(\/[^?#\s]*)?(\?[^#\s]+)?(#[^\s]+)?$/i;
9257
9257
  var RELATIVE_REGEX = /^(\/[^?#\s]*)?(\?[^#\s]+)?(#[^\s]+)?$/i;
9258
9258
  var AtUri = class {
@@ -29154,5 +29154,131 @@ var BskyAgent = class extends AtpAgent {
29154
29154
  seenAt
29155
29155
  });
29156
29156
  }
29157
+ async getPreferences() {
29158
+ const prefs = {
29159
+ feeds: {
29160
+ saved: void 0,
29161
+ pinned: void 0
29162
+ },
29163
+ adultContentEnabled: false,
29164
+ contentLabels: {}
29165
+ };
29166
+ const res = await this.app.bsky.actor.getPreferences({});
29167
+ for (const pref of res.data.preferences) {
29168
+ if (defs_exports5.isAdultContentPref(pref) && defs_exports5.validateAdultContentPref(pref).success) {
29169
+ prefs.adultContentEnabled = pref.enabled;
29170
+ } else if (defs_exports5.isContentLabelPref(pref) && defs_exports5.validateAdultContentPref(pref).success) {
29171
+ let value = pref.visibility;
29172
+ if (value === "show") {
29173
+ value = "ignore";
29174
+ }
29175
+ if (value === "ignore" || value === "warn" || value === "hide") {
29176
+ prefs.contentLabels[pref.label] = value;
29177
+ }
29178
+ } else if (defs_exports5.isSavedFeedsPref(pref) && defs_exports5.validateSavedFeedsPref(pref).success) {
29179
+ prefs.feeds.saved = pref.saved;
29180
+ prefs.feeds.pinned = pref.pinned;
29181
+ }
29182
+ }
29183
+ return prefs;
29184
+ }
29185
+ async setSavedFeeds(saved, pinned) {
29186
+ return updateFeedPreferences(this, () => ({
29187
+ saved,
29188
+ pinned
29189
+ }));
29190
+ }
29191
+ async addSavedFeed(v) {
29192
+ return updateFeedPreferences(this, (saved, pinned) => ({
29193
+ saved: [...saved.filter((uri2) => uri2 !== v), v],
29194
+ pinned
29195
+ }));
29196
+ }
29197
+ async removeSavedFeed(v) {
29198
+ return updateFeedPreferences(this, (saved, pinned) => ({
29199
+ saved: saved.filter((uri2) => uri2 !== v),
29200
+ pinned: pinned.filter((uri2) => uri2 !== v)
29201
+ }));
29202
+ }
29203
+ async addPinnedFeed(v) {
29204
+ return updateFeedPreferences(this, (saved, pinned) => ({
29205
+ saved: [...saved.filter((uri2) => uri2 !== v), v],
29206
+ pinned: [...pinned.filter((uri2) => uri2 !== v), v]
29207
+ }));
29208
+ }
29209
+ async removePinnedFeed(v) {
29210
+ return updateFeedPreferences(this, (saved, pinned) => ({
29211
+ saved,
29212
+ pinned: pinned.filter((uri2) => uri2 !== v)
29213
+ }));
29214
+ }
29215
+ async setAdultContentEnabled(v) {
29216
+ await updatePreferences(this, (prefs) => {
29217
+ const existing = prefs.find(
29218
+ (pref) => defs_exports5.isAdultContentPref(pref) && defs_exports5.validateAdultContentPref(pref).success
29219
+ );
29220
+ if (existing) {
29221
+ existing.enabled = v;
29222
+ } else {
29223
+ prefs.push({
29224
+ $type: "app.bsky.actor.defs#adultContentPref",
29225
+ enabled: v
29226
+ });
29227
+ }
29228
+ return prefs;
29229
+ });
29230
+ }
29231
+ async setContentLabelPref(key, value) {
29232
+ if (value === "show") {
29233
+ value = "ignore";
29234
+ }
29235
+ await updatePreferences(this, (prefs) => {
29236
+ const existing = prefs.find(
29237
+ (pref) => defs_exports5.isContentLabelPref(pref) && defs_exports5.validateAdultContentPref(pref).success && pref.label === key
29238
+ );
29239
+ if (existing) {
29240
+ existing.visibility = value;
29241
+ } else {
29242
+ prefs.push({
29243
+ $type: "app.bsky.actor.defs#contentLabelPref",
29244
+ label: key,
29245
+ visibility: value
29246
+ });
29247
+ }
29248
+ return prefs;
29249
+ });
29250
+ }
29157
29251
  };
29252
+ async function updatePreferences(agent, cb) {
29253
+ const res = await agent.app.bsky.actor.getPreferences({});
29254
+ const newPrefs = cb(res.data.preferences);
29255
+ if (newPrefs === false) {
29256
+ return;
29257
+ }
29258
+ await agent.app.bsky.actor.putPreferences({
29259
+ preferences: newPrefs
29260
+ });
29261
+ }
29262
+ async function updateFeedPreferences(agent, cb) {
29263
+ let res;
29264
+ await updatePreferences(agent, (prefs) => {
29265
+ let feedsPref = prefs.find(
29266
+ (pref) => defs_exports5.isSavedFeedsPref(pref) && defs_exports5.validateSavedFeedsPref(pref).success
29267
+ );
29268
+ if (feedsPref) {
29269
+ res = cb(feedsPref.saved, feedsPref.pinned);
29270
+ feedsPref.saved = res.saved;
29271
+ feedsPref.pinned = res.pinned;
29272
+ } else {
29273
+ res = cb([], []);
29274
+ feedsPref = {
29275
+ $type: "app.bsky.actor.defs#savedFeedsPref",
29276
+ saved: res.saved,
29277
+ pinned: res.pinned
29278
+ };
29279
+ }
29280
+ return prefs.filter((pref) => !defs_exports5.isSavedFeedsPref(pref)).concat([feedsPref]);
29281
+ });
29282
+ return res;
29283
+ }
29158
29284
  //# sourceMappingURL=index.js.map