@whitewall/blip-sdk 0.0.196 → 0.0.197
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/cjs/namespaces/media.js +42 -7
- package/dist/cjs/namespaces/media.js.map +1 -1
- package/dist/esm/namespaces/media.js +42 -7
- package/dist/esm/namespaces/media.js.map +1 -1
- package/dist/types/namespaces/media.d.ts +3 -0
- package/dist/types/namespaces/media.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/namespaces/media.ts +62 -10
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MediaNamespace = void 0;
|
|
4
|
+
const index_ts_1 = require("../types/index.js");
|
|
5
|
+
const logger_ts_1 = require("../utils/logger.js");
|
|
4
6
|
const uri_ts_1 = require("../utils/uri.js");
|
|
5
7
|
const namespace_ts_1 = require("./namespace.js");
|
|
6
8
|
class MediaNamespace extends namespace_ts_1.Namespace {
|
|
@@ -28,13 +30,46 @@ class MediaNamespace extends namespace_ts_1.Namespace {
|
|
|
28
30
|
const { mediaUri } = await uploadResponse.json();
|
|
29
31
|
return mediaUri;
|
|
30
32
|
}
|
|
31
|
-
async refreshMedia(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
async refreshMedia(target, opts) {
|
|
34
|
+
if (typeof target === 'string') {
|
|
35
|
+
return await this.sendCommand({
|
|
36
|
+
method: 'set',
|
|
37
|
+
uri: (0, uri_ts_1.uri) `/refresh-media-uri`,
|
|
38
|
+
type: 'text/plain',
|
|
39
|
+
resource: target,
|
|
40
|
+
}, opts);
|
|
41
|
+
}
|
|
42
|
+
if ((0, index_ts_1.isDocumentOfType)(target, 'application/vnd.lime.media-link+json')) {
|
|
43
|
+
return {
|
|
44
|
+
...target,
|
|
45
|
+
value: { ...target.value, uri: await this.tryRefreshUri(target.value.uri, opts) },
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
if ((0, index_ts_1.isDocumentOfType)(target, 'application/vnd.lime.collection+json')) {
|
|
49
|
+
const { itemType, items } = target.value;
|
|
50
|
+
const refreshed = await Promise.all(items.map((item) => this.refreshMedia({ type: itemType, value: item }, opts)));
|
|
51
|
+
return { ...target, value: { ...target.value, items: refreshed.map((item) => item.value) } };
|
|
52
|
+
}
|
|
53
|
+
if ((0, index_ts_1.isDocumentOfType)(target, 'application/vnd.lime.reply+json')) {
|
|
54
|
+
const [replied, inReplyTo] = await Promise.all([
|
|
55
|
+
this.refreshMedia(target.value.replied, opts),
|
|
56
|
+
this.refreshMedia(target.value.inReplyTo, opts),
|
|
57
|
+
]);
|
|
58
|
+
return { ...target, value: { replied, inReplyTo } };
|
|
59
|
+
}
|
|
60
|
+
return target;
|
|
61
|
+
}
|
|
62
|
+
async tryRefreshUri(url, opts) {
|
|
63
|
+
if (!URL.canParse(url)) {
|
|
64
|
+
return url;
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
return await this.refreshMedia(url, opts);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
logger_ts_1.logger.warn('media', `Failed to refresh media: ${url}`, error);
|
|
71
|
+
return url;
|
|
72
|
+
}
|
|
38
73
|
}
|
|
39
74
|
}
|
|
40
75
|
exports.MediaNamespace = MediaNamespace;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/namespaces/media.ts"],"names":[],"mappings":";;;AACA,4CAAqC;AACrC,iDAAwF;AAExF,MAAa,cAAe,SAAQ,wBAAS;IACzC,YAAY,UAAsB,EAAE,cAAmC;QACnE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,cAAc,CAAC,CAAA;IAC9C,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,IAAqB;QAChD,OAAO,MAAM,IAAI,CAAC,WAAW,CACzB;YACI,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,IAAA,YAAG,EAAA,mBAAmB;SAC9B,EACD,IAAI,CACP,CAAA;IACL,CAAC;IAEM,KAAK,CAAC,WAAW,CACpB,QAAgB,EAChB,KAAoD,EACpD,IAAqB;QAErB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;QAC9C,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YACpC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,QAAQ;aAC3B;YACD,IAAI,EAAE,KAAK;SACd,CAAC,CAAA;QACF,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,2BAA2B,cAAc,CAAC,UAAU,EAAE,CAAC,CAAA;QAC3E,CAAC;QACD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAA;QAChD,OAAO,QAAQ,CAAA;IACnB,CAAC;
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/namespaces/media.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { isDocumentOfType } from "../types/index.js";
|
|
2
|
+
import { logger } from "../utils/logger.js";
|
|
1
3
|
import { uri } from "../utils/uri.js";
|
|
2
4
|
import { Namespace } from "./namespace.js";
|
|
3
5
|
export class MediaNamespace extends Namespace {
|
|
@@ -25,13 +27,46 @@ export class MediaNamespace extends Namespace {
|
|
|
25
27
|
const { mediaUri } = await uploadResponse.json();
|
|
26
28
|
return mediaUri;
|
|
27
29
|
}
|
|
28
|
-
async refreshMedia(
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
async refreshMedia(target, opts) {
|
|
31
|
+
if (typeof target === 'string') {
|
|
32
|
+
return await this.sendCommand({
|
|
33
|
+
method: 'set',
|
|
34
|
+
uri: uri `/refresh-media-uri`,
|
|
35
|
+
type: 'text/plain',
|
|
36
|
+
resource: target,
|
|
37
|
+
}, opts);
|
|
38
|
+
}
|
|
39
|
+
if (isDocumentOfType(target, 'application/vnd.lime.media-link+json')) {
|
|
40
|
+
return {
|
|
41
|
+
...target,
|
|
42
|
+
value: { ...target.value, uri: await this.tryRefreshUri(target.value.uri, opts) },
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
if (isDocumentOfType(target, 'application/vnd.lime.collection+json')) {
|
|
46
|
+
const { itemType, items } = target.value;
|
|
47
|
+
const refreshed = await Promise.all(items.map((item) => this.refreshMedia({ type: itemType, value: item }, opts)));
|
|
48
|
+
return { ...target, value: { ...target.value, items: refreshed.map((item) => item.value) } };
|
|
49
|
+
}
|
|
50
|
+
if (isDocumentOfType(target, 'application/vnd.lime.reply+json')) {
|
|
51
|
+
const [replied, inReplyTo] = await Promise.all([
|
|
52
|
+
this.refreshMedia(target.value.replied, opts),
|
|
53
|
+
this.refreshMedia(target.value.inReplyTo, opts),
|
|
54
|
+
]);
|
|
55
|
+
return { ...target, value: { replied, inReplyTo } };
|
|
56
|
+
}
|
|
57
|
+
return target;
|
|
58
|
+
}
|
|
59
|
+
async tryRefreshUri(url, opts) {
|
|
60
|
+
if (!URL.canParse(url)) {
|
|
61
|
+
return url;
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
return await this.refreshMedia(url, opts);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
logger.warn('media', `Failed to refresh media: ${url}`, error);
|
|
68
|
+
return url;
|
|
69
|
+
}
|
|
35
70
|
}
|
|
36
71
|
}
|
|
37
72
|
//# sourceMappingURL=media.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/namespaces/media.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AACrC,OAAO,EAAuB,SAAS,EAA2B,MAAM,gBAAgB,CAAA;AAExF,MAAM,OAAO,cAAe,SAAQ,SAAS;IACzC,YAAY,UAAsB,EAAE,cAAmC;QACnE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,cAAc,CAAC,CAAA;IAC9C,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,IAAqB;QAChD,OAAO,MAAM,IAAI,CAAC,WAAW,CACzB;YACI,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,CAAA,mBAAmB;SAC9B,EACD,IAAI,CACP,CAAA;IACL,CAAC;IAEM,KAAK,CAAC,WAAW,CACpB,QAAgB,EAChB,KAAoD,EACpD,IAAqB;QAErB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;QAC9C,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YACpC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,QAAQ;aAC3B;YACD,IAAI,EAAE,KAAK;SACd,CAAC,CAAA;QACF,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,2BAA2B,cAAc,CAAC,UAAU,EAAE,CAAC,CAAA;QAC3E,CAAC;QACD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAA;QAChD,OAAO,QAAQ,CAAA;IACnB,CAAC;
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/namespaces/media.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import type { BlipClient } from '../client.ts';
|
|
2
|
+
import { type UnknownDocument } from '../types/index.ts';
|
|
2
3
|
import { type ConsumeOptions, Namespace, type SendCommandOptions } from './namespace.ts';
|
|
3
4
|
export declare class MediaNamespace extends Namespace {
|
|
4
5
|
constructor(blipClient: BlipClient, defaultOptions?: SendCommandOptions);
|
|
5
6
|
getMediaUploadUrl(opts?: ConsumeOptions): Promise<string>;
|
|
6
7
|
uploadMedia(mimetype: string, media: BufferSource | Blob | string | ReadableStream, opts?: ConsumeOptions): Promise<string>;
|
|
7
8
|
refreshMedia(url: string, opts?: ConsumeOptions): Promise<string>;
|
|
9
|
+
refreshMedia<TDocument extends UnknownDocument>(document: TDocument, opts?: ConsumeOptions): Promise<TDocument>;
|
|
10
|
+
private tryRefreshUri;
|
|
8
11
|
}
|
|
9
12
|
//# sourceMappingURL=media.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/namespaces/media.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/namespaces/media.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAG1E,OAAO,EAAE,KAAK,cAAc,EAAE,SAAS,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAExF,qBAAa,cAAe,SAAQ,SAAS;gBAC7B,UAAU,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,kBAAkB;IAI1D,iBAAiB,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAUzD,WAAW,CACpB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,cAAc,EACpD,IAAI,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,MAAM,CAAC;IAgBL,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IACjE,YAAY,CAAC,SAAS,SAAS,eAAe,EACvD,QAAQ,EAAE,SAAS,EACnB,IAAI,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,SAAS,CAAC;YA6CP,aAAa;CAY9B"}
|
package/package.json
CHANGED
package/src/namespaces/media.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { BlipClient } from '../client.ts'
|
|
2
|
+
import { isDocumentOfType, type UnknownDocument } from '../types/index.ts'
|
|
3
|
+
import { logger } from '../utils/logger.ts'
|
|
2
4
|
import { uri } from '../utils/uri.ts'
|
|
3
5
|
import { type ConsumeOptions, Namespace, type SendCommandOptions } from './namespace.ts'
|
|
4
6
|
|
|
@@ -37,15 +39,65 @@ export class MediaNamespace extends Namespace {
|
|
|
37
39
|
return mediaUri
|
|
38
40
|
}
|
|
39
41
|
|
|
40
|
-
public async refreshMedia(url: string, opts?: ConsumeOptions): Promise<string>
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
)
|
|
42
|
+
public async refreshMedia(url: string, opts?: ConsumeOptions): Promise<string>
|
|
43
|
+
public async refreshMedia<TDocument extends UnknownDocument>(
|
|
44
|
+
document: TDocument,
|
|
45
|
+
opts?: ConsumeOptions,
|
|
46
|
+
): Promise<TDocument>
|
|
47
|
+
public async refreshMedia(
|
|
48
|
+
target: string | UnknownDocument,
|
|
49
|
+
opts?: ConsumeOptions,
|
|
50
|
+
): Promise<string | UnknownDocument> {
|
|
51
|
+
if (typeof target === 'string') {
|
|
52
|
+
return await this.sendCommand(
|
|
53
|
+
{
|
|
54
|
+
method: 'set',
|
|
55
|
+
uri: uri`/refresh-media-uri`,
|
|
56
|
+
type: 'text/plain',
|
|
57
|
+
resource: target,
|
|
58
|
+
},
|
|
59
|
+
opts,
|
|
60
|
+
)
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (isDocumentOfType(target, 'application/vnd.lime.media-link+json')) {
|
|
64
|
+
return {
|
|
65
|
+
...target,
|
|
66
|
+
value: { ...target.value, uri: await this.tryRefreshUri(target.value.uri, opts) },
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (isDocumentOfType(target, 'application/vnd.lime.collection+json')) {
|
|
71
|
+
const { itemType, items } = target.value
|
|
72
|
+
const refreshed = await Promise.all(
|
|
73
|
+
items.map((item) => this.refreshMedia({ type: itemType, value: item }, opts)),
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
return { ...target, value: { ...target.value, items: refreshed.map((item) => item.value) } }
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (isDocumentOfType(target, 'application/vnd.lime.reply+json')) {
|
|
80
|
+
const [replied, inReplyTo] = await Promise.all([
|
|
81
|
+
this.refreshMedia(target.value.replied, opts),
|
|
82
|
+
this.refreshMedia(target.value.inReplyTo, opts),
|
|
83
|
+
])
|
|
84
|
+
|
|
85
|
+
return { ...target, value: { replied, inReplyTo } }
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return target
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
private async tryRefreshUri(url: string, opts?: ConsumeOptions): Promise<string> {
|
|
92
|
+
if (!URL.canParse(url)) {
|
|
93
|
+
return url
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
try {
|
|
97
|
+
return await this.refreshMedia(url, opts)
|
|
98
|
+
} catch (error) {
|
|
99
|
+
logger.warn('media', `Failed to refresh media: ${url}`, error)
|
|
100
|
+
return url
|
|
101
|
+
}
|
|
50
102
|
}
|
|
51
103
|
}
|