@atcute/bluesky 2.0.3 → 2.1.1

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.
@@ -0,0 +1,2 @@
1
+ import './lexicons.js';
2
+ export * from './utilities/embeds.js';
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ import './lexicons.js';
2
+ export * from './utilities/embeds.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAEvB,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,56 @@
1
+ import type { AppBskyEmbedRecord, AppBskyEmbedRecordWithMedia, AppBskyFeedDefs, AppBskyFeedPost, Brand } from '@atcute/client/lexicons';
2
+ export interface RawEmbeds {
3
+ media?: AppBskyEmbedRecordWithMedia.Main['media'];
4
+ record?: AppBskyEmbedRecordWithMedia.Main['record'];
5
+ }
6
+ export type RawMediaEmbed = NonNullable<RawEmbeds['media']>;
7
+ export type RawRecordEmbed = NonNullable<RawEmbeds['record']>;
8
+ /**
9
+ * extracts raw media embed from a post record embed
10
+ * @param embed the embed interface to extract from
11
+ * @returns the extracted raw media embed, if any
12
+ */
13
+ export declare const unwrapRawMediaEmbed: (embed: AppBskyFeedPost.Record["embed"]) => RawEmbeds["media"];
14
+ /**
15
+ * extracts raw record embed from a post record embed
16
+ * @param embed the embed interface to extract from
17
+ * @returns the extracted raw record embed, if any
18
+ */
19
+ export declare const unwrapRawRecordEmbed: (embed: AppBskyFeedPost.Record["embed"]) => RawEmbeds["record"];
20
+ /**
21
+ * extracts raw media and record embeds from a post record embed
22
+ * @param embed the embed interface to extract from
23
+ * @returns the extracted raw media and record embeds, if any
24
+ */
25
+ export declare const unwrapRawEmbed: (embed: AppBskyFeedPost.Record["embed"]) => RawEmbeds;
26
+ export interface Embeds {
27
+ media?: AppBskyEmbedRecordWithMedia.View['media'];
28
+ record?: AppBskyEmbedRecordWithMedia.View['record']['record'];
29
+ }
30
+ export type MediaEmbed = NonNullable<Embeds['media']>;
31
+ export type RecordEmbed = NonNullable<Embeds['record']>;
32
+ /**
33
+ * extracts media embed from a post embed
34
+ * @param embed the embed interface to extract from
35
+ * @returns the extracted media embed, if any
36
+ */
37
+ export declare const unwrapMediaEmbed: (embed: AppBskyFeedDefs.PostView["embed"]) => Embeds["media"];
38
+ /**
39
+ * extracts record embed from a post embed
40
+ * @param embed the embed interface to extract from
41
+ * @returns the extracted record embed, if any
42
+ */
43
+ export declare const unwrapRecordEmbed: (embed: AppBskyFeedDefs.PostView["embed"]) => Embeds["record"];
44
+ /**
45
+ * extracts media and record embeds from a post embed
46
+ * @param embed the embed interface to extract from
47
+ * @returns the extracted media and record embeds, if any
48
+ */
49
+ export declare const unwrapEmbed: (embed: AppBskyFeedDefs.PostView["embed"]) => Embeds;
50
+ export type QuoteEmbed = Brand.Union<AppBskyEmbedRecord.ViewBlocked | AppBskyEmbedRecord.ViewDetached | AppBskyEmbedRecord.ViewNotFound | AppBskyEmbedRecord.ViewRecord>;
51
+ /**
52
+ * get quote embed from a record embed
53
+ * @param embed the record embed to extract from
54
+ * @returns the extracted quote embed, if any
55
+ */
56
+ export declare const unwrapQuoteEmbed: (embed: RecordEmbed | undefined) => QuoteEmbed | undefined;
@@ -0,0 +1,96 @@
1
+ /**
2
+ * extracts raw media embed from a post record embed
3
+ * @param embed the embed interface to extract from
4
+ * @returns the extracted raw media embed, if any
5
+ */
6
+ export const unwrapRawMediaEmbed = (embed) => {
7
+ switch (embed?.$type) {
8
+ case 'app.bsky.embed.recordWithMedia':
9
+ return embed.media;
10
+ case 'app.bsky.embed.record':
11
+ return;
12
+ }
13
+ return embed;
14
+ };
15
+ /**
16
+ * extracts raw record embed from a post record embed
17
+ * @param embed the embed interface to extract from
18
+ * @returns the extracted raw record embed, if any
19
+ */
20
+ export const unwrapRawRecordEmbed = (embed) => {
21
+ switch (embed?.$type) {
22
+ case 'app.bsky.embed.recordWithMedia':
23
+ return embed.record;
24
+ case 'app.bsky.embed.record':
25
+ return embed;
26
+ }
27
+ };
28
+ /**
29
+ * extracts raw media and record embeds from a post record embed
30
+ * @param embed the embed interface to extract from
31
+ * @returns the extracted raw media and record embeds, if any
32
+ */
33
+ export const unwrapRawEmbed = (embed) => {
34
+ return {
35
+ media: unwrapRawMediaEmbed(embed),
36
+ record: unwrapRawRecordEmbed(embed),
37
+ };
38
+ };
39
+ /**
40
+ * extracts media embed from a post embed
41
+ * @param embed the embed interface to extract from
42
+ * @returns the extracted media embed, if any
43
+ */
44
+ export const unwrapMediaEmbed = (embed) => {
45
+ switch (embed?.$type) {
46
+ case 'app.bsky.embed.recordWithMedia#view':
47
+ return embed.media;
48
+ case 'app.bsky.embed.record#view':
49
+ return;
50
+ }
51
+ return embed;
52
+ };
53
+ /**
54
+ * extracts record embed from a post embed
55
+ * @param embed the embed interface to extract from
56
+ * @returns the extracted record embed, if any
57
+ */
58
+ export const unwrapRecordEmbed = (embed) => {
59
+ switch (embed?.$type) {
60
+ case 'app.bsky.embed.recordWithMedia#view':
61
+ return embed.record.record;
62
+ case 'app.bsky.embed.record#view':
63
+ return embed.record;
64
+ }
65
+ };
66
+ /**
67
+ * extracts media and record embeds from a post embed
68
+ * @param embed the embed interface to extract from
69
+ * @returns the extracted media and record embeds, if any
70
+ */
71
+ export const unwrapEmbed = (embed) => {
72
+ return {
73
+ media: unwrapMediaEmbed(embed),
74
+ record: unwrapRecordEmbed(embed),
75
+ };
76
+ };
77
+ /**
78
+ * get quote embed from a record embed
79
+ * @param embed the record embed to extract from
80
+ * @returns the extracted quote embed, if any
81
+ */
82
+ export const unwrapQuoteEmbed = (embed) => {
83
+ switch (embed?.$type) {
84
+ case 'app.bsky.embed.record#viewRecord': {
85
+ return embed;
86
+ }
87
+ case 'app.bsky.embed.record#viewBlocked':
88
+ case 'app.bsky.embed.record#viewDetached':
89
+ case 'app.bsky.embed.record#viewNotFound': {
90
+ if (embed.uri.includes('/app.bsky.feed.post/')) {
91
+ return embed;
92
+ }
93
+ }
94
+ }
95
+ };
96
+ //# sourceMappingURL=embeds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeds.js","sourceRoot":"","sources":["../../lib/utilities/embeds.ts"],"names":[],"mappings":"AAgBA;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAsC,EAAsB,EAAE;IACjG,QAAQ,KAAK,EAAE,KAAK,EAAE,CAAC;QACtB,KAAK,gCAAgC;YACpC,OAAO,KAAK,CAAC,KAAK,CAAC;QACpB,KAAK,uBAAuB;YAC3B,OAAO;IACT,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAsC,EAAuB,EAAE;IACnG,QAAQ,KAAK,EAAE,KAAK,EAAE,CAAC;QACtB,KAAK,gCAAgC;YACpC,OAAO,KAAK,CAAC,MAAM,CAAC;QAErB,KAAK,uBAAuB;YAC3B,OAAO,KAAK,CAAC;IACf,CAAC;AACF,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAsC,EAAa,EAAE;IACnF,OAAO;QACN,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;QACjC,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC;KACnC,CAAC;AACH,CAAC,CAAC;AAUF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAwC,EAAmB,EAAE;IAC7F,QAAQ,KAAK,EAAE,KAAK,EAAE,CAAC;QACtB,KAAK,qCAAqC;YACzC,OAAO,KAAK,CAAC,KAAK,CAAC;QACpB,KAAK,4BAA4B;YAChC,OAAO;IACT,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAwC,EAAoB,EAAE;IAC/F,QAAQ,KAAK,EAAE,KAAK,EAAE,CAAC;QACtB,KAAK,qCAAqC;YACzC,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QAE5B,KAAK,4BAA4B;YAChC,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;AACF,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAwC,EAAU,EAAE;IAC/E,OAAO;QACN,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC;QAC9B,MAAM,EAAE,iBAAiB,CAAC,KAAK,CAAC;KAChC,CAAC;AACH,CAAC,CAAC;AASF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAA8B,EAA0B,EAAE;IAC1F,QAAQ,KAAK,EAAE,KAAK,EAAE,CAAC;QACtB,KAAK,kCAAkC,CAAC,CAAC,CAAC;YACzC,OAAO,KAAK,CAAC;QACd,CAAC;QAED,KAAK,mCAAmC,CAAC;QACzC,KAAK,oCAAoC,CAAC;QAC1C,KAAK,oCAAoC,CAAC,CAAC,CAAC;YAC3C,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;gBAChD,OAAO,KAAK,CAAC;YACd,CAAC;QACF,CAAC;IACF,CAAC;AACF,CAAC,CAAC"}
package/lib/index.ts ADDED
@@ -0,0 +1,3 @@
1
+ import './lexicons.js';
2
+
3
+ export * from './utilities/embeds.js';
@@ -0,0 +1,137 @@
1
+ import type {
2
+ AppBskyEmbedRecord,
3
+ AppBskyEmbedRecordWithMedia,
4
+ AppBskyFeedDefs,
5
+ AppBskyFeedPost,
6
+ Brand,
7
+ } from '@atcute/client/lexicons';
8
+
9
+ export interface RawEmbeds {
10
+ media?: AppBskyEmbedRecordWithMedia.Main['media'];
11
+ record?: AppBskyEmbedRecordWithMedia.Main['record'];
12
+ }
13
+
14
+ export type RawMediaEmbed = NonNullable<RawEmbeds['media']>;
15
+ export type RawRecordEmbed = NonNullable<RawEmbeds['record']>;
16
+
17
+ /**
18
+ * extracts raw media embed from a post record embed
19
+ * @param embed the embed interface to extract from
20
+ * @returns the extracted raw media embed, if any
21
+ */
22
+ export const unwrapRawMediaEmbed = (embed: AppBskyFeedPost.Record['embed']): RawEmbeds['media'] => {
23
+ switch (embed?.$type) {
24
+ case 'app.bsky.embed.recordWithMedia':
25
+ return embed.media;
26
+ case 'app.bsky.embed.record':
27
+ return;
28
+ }
29
+
30
+ return embed;
31
+ };
32
+
33
+ /**
34
+ * extracts raw record embed from a post record embed
35
+ * @param embed the embed interface to extract from
36
+ * @returns the extracted raw record embed, if any
37
+ */
38
+ export const unwrapRawRecordEmbed = (embed: AppBskyFeedPost.Record['embed']): RawEmbeds['record'] => {
39
+ switch (embed?.$type) {
40
+ case 'app.bsky.embed.recordWithMedia':
41
+ return embed.record;
42
+
43
+ case 'app.bsky.embed.record':
44
+ return embed;
45
+ }
46
+ };
47
+
48
+ /**
49
+ * extracts raw media and record embeds from a post record embed
50
+ * @param embed the embed interface to extract from
51
+ * @returns the extracted raw media and record embeds, if any
52
+ */
53
+ export const unwrapRawEmbed = (embed: AppBskyFeedPost.Record['embed']): RawEmbeds => {
54
+ return {
55
+ media: unwrapRawMediaEmbed(embed),
56
+ record: unwrapRawRecordEmbed(embed),
57
+ };
58
+ };
59
+
60
+ export interface Embeds {
61
+ media?: AppBskyEmbedRecordWithMedia.View['media'];
62
+ record?: AppBskyEmbedRecordWithMedia.View['record']['record'];
63
+ }
64
+
65
+ export type MediaEmbed = NonNullable<Embeds['media']>;
66
+ export type RecordEmbed = NonNullable<Embeds['record']>;
67
+
68
+ /**
69
+ * extracts media embed from a post embed
70
+ * @param embed the embed interface to extract from
71
+ * @returns the extracted media embed, if any
72
+ */
73
+ export const unwrapMediaEmbed = (embed: AppBskyFeedDefs.PostView['embed']): Embeds['media'] => {
74
+ switch (embed?.$type) {
75
+ case 'app.bsky.embed.recordWithMedia#view':
76
+ return embed.media;
77
+ case 'app.bsky.embed.record#view':
78
+ return;
79
+ }
80
+
81
+ return embed;
82
+ };
83
+
84
+ /**
85
+ * extracts record embed from a post embed
86
+ * @param embed the embed interface to extract from
87
+ * @returns the extracted record embed, if any
88
+ */
89
+ export const unwrapRecordEmbed = (embed: AppBskyFeedDefs.PostView['embed']): Embeds['record'] => {
90
+ switch (embed?.$type) {
91
+ case 'app.bsky.embed.recordWithMedia#view':
92
+ return embed.record.record;
93
+
94
+ case 'app.bsky.embed.record#view':
95
+ return embed.record;
96
+ }
97
+ };
98
+
99
+ /**
100
+ * extracts media and record embeds from a post embed
101
+ * @param embed the embed interface to extract from
102
+ * @returns the extracted media and record embeds, if any
103
+ */
104
+ export const unwrapEmbed = (embed: AppBskyFeedDefs.PostView['embed']): Embeds => {
105
+ return {
106
+ media: unwrapMediaEmbed(embed),
107
+ record: unwrapRecordEmbed(embed),
108
+ };
109
+ };
110
+
111
+ export type QuoteEmbed = Brand.Union<
112
+ | AppBskyEmbedRecord.ViewBlocked
113
+ | AppBskyEmbedRecord.ViewDetached
114
+ | AppBskyEmbedRecord.ViewNotFound
115
+ | AppBskyEmbedRecord.ViewRecord
116
+ >;
117
+
118
+ /**
119
+ * get quote embed from a record embed
120
+ * @param embed the record embed to extract from
121
+ * @returns the extracted quote embed, if any
122
+ */
123
+ export const unwrapQuoteEmbed = (embed: RecordEmbed | undefined): QuoteEmbed | undefined => {
124
+ switch (embed?.$type) {
125
+ case 'app.bsky.embed.record#viewRecord': {
126
+ return embed;
127
+ }
128
+
129
+ case 'app.bsky.embed.record#viewBlocked':
130
+ case 'app.bsky.embed.record#viewDetached':
131
+ case 'app.bsky.embed.record#viewNotFound': {
132
+ if (embed.uri.includes('/app.bsky.feed.post/')) {
133
+ return embed;
134
+ }
135
+ }
136
+ }
137
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@atcute/bluesky",
4
- "version": "2.0.3",
4
+ "version": "2.1.1",
5
5
  "description": "Bluesky type definitions for atcute",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -15,14 +15,15 @@
15
15
  "!lib/**/*.test.ts"
16
16
  ],
17
17
  "exports": {
18
+ ".": "./dist/index.js",
18
19
  "./lexicons": "./dist/lexicons.js"
19
20
  },
20
21
  "peerDependencies": {
21
22
  "@atcute/client": "^3.0.0"
22
23
  },
23
24
  "devDependencies": {
24
- "@atcute/client": "^3.0.1",
25
- "@atcute/lex-cli": "^1.1.1"
25
+ "@atcute/client": "^3.1.0",
26
+ "@atcute/lex-cli": "^1.1.2"
26
27
  },
27
28
  "scripts": {
28
29
  "build": "tsc",