@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.
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/utilities/embeds.d.ts +56 -0
- package/dist/utilities/embeds.js +96 -0
- package/dist/utilities/embeds.js.map +1 -0
- package/lib/index.ts +3 -0
- package/lib/utilities/embeds.ts +137 -0
- package/package.json +4 -3
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -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,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.
|
|
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
|
|
25
|
-
"@atcute/lex-cli": "^1.1.
|
|
25
|
+
"@atcute/client": "^3.1.0",
|
|
26
|
+
"@atcute/lex-cli": "^1.1.2"
|
|
26
27
|
},
|
|
27
28
|
"scripts": {
|
|
28
29
|
"build": "tsc",
|