graze-client 0.3.3 → 0.3.4
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/README.md +61 -18
- package/build/dts/index.d.ts +2 -1
- package/build/dts/index.d.ts.map +1 -1
- package/build/esm/index.js +2 -0
- package/build/esm/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +3 -0
package/README.md
CHANGED
|
@@ -6,7 +6,21 @@ This is a simple Typescript package for interacting with the [Graze](https://gra
|
|
|
6
6
|
npm install graze-client
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
1. **getFeeds:** Get all your graze feeds.
|
|
12
|
+
1. **getFeed:** Get a specific feed.
|
|
13
|
+
1. **hidePost:** Hide a post from a feed.
|
|
14
|
+
1. **updateAlgorithm:** Update an algorithm.
|
|
15
|
+
1. **publishAlgorithm:** Publish an algorithm.
|
|
16
|
+
1. **Algorithm Builder:** A custom utility to make building an algorithm easier. See the example below.
|
|
17
|
+
|
|
18
|
+
### This is a WIP
|
|
19
|
+
|
|
20
|
+
This package is under development, so if you find bugs, please report. Known issues include:
|
|
21
|
+
|
|
22
|
+
1. Not all graze operators or APIs are implemented. I have only implemented what I need so far, so feed free to make a PR adding more.
|
|
23
|
+
2. Not everything is documented, but typescript is your friend. It you use this in an editor like VSCode, you should get good autocomplete hints for types.
|
|
10
24
|
|
|
11
25
|
## Usage
|
|
12
26
|
|
|
@@ -17,38 +31,67 @@ There are two exports:
|
|
|
17
31
|
### 1. A promise-based `GrazeService`
|
|
18
32
|
|
|
19
33
|
```ts
|
|
20
|
-
import { GrazeService } from "graze-client";
|
|
34
|
+
import { GrazeService, F, Algo, FullForm } from "graze-client";
|
|
21
35
|
|
|
22
36
|
const graze = new GrazeService({
|
|
23
37
|
apiUrl: "https://api.graze.social",
|
|
24
|
-
cookie: "
|
|
38
|
+
cookie: "<change this>",
|
|
25
39
|
userId: 15,
|
|
26
40
|
});
|
|
27
41
|
|
|
42
|
+
// get feets
|
|
28
43
|
const myFeeds = await graze.getFeeds();
|
|
29
44
|
const feed = await graze.getFeed({ path: { feedId: 1234 } });
|
|
30
45
|
// hide a post
|
|
31
46
|
await graze.hidePost({
|
|
32
47
|
payload: { algo_id: 1234, at_uri: "at://<did>/app.bsky.feed.post/<rkey>" },
|
|
33
48
|
});
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
49
|
+
|
|
50
|
+
// build a complex algorithm
|
|
51
|
+
|
|
52
|
+
const hasNoBadContent = F.and(
|
|
53
|
+
F.isContentOk(0.9),
|
|
54
|
+
F.hasNoNSFWLabels,
|
|
55
|
+
F.isNotListMember("my-blocklist-url")
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
const algo = Algo.filter(
|
|
59
|
+
// the top level filter will combine elements in an "and" block
|
|
60
|
+
hasNoBadContent,
|
|
61
|
+
F.hasVideo,
|
|
62
|
+
F.or(
|
|
63
|
+
F.posterFollows("@samuel.bsky.team"),
|
|
64
|
+
F.isListMember("my-whitelist-url"),
|
|
65
|
+
F.and(
|
|
66
|
+
F.regexMatches("text", "my-keyword-regex"),
|
|
67
|
+
F.regexMatches("embed.alt", "my-keyword-regex"),
|
|
68
|
+
F.regexMatches("embed.external.title", "my-keyword-regex"),
|
|
69
|
+
F.regexMatches("embed.external.description", "my-keyword-regex"),
|
|
70
|
+
F.isPost
|
|
71
|
+
),
|
|
72
|
+
F.or(
|
|
73
|
+
// nested logic blocks will be automatically flattened, so this will
|
|
74
|
+
// be brought up one level since it is logically equivalent.
|
|
75
|
+
F.regexNegationMatches("text", "my-negative-keyword-regex")
|
|
76
|
+
)
|
|
77
|
+
)
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
const manifest: FullForm = {
|
|
81
|
+
algorithm_manifest: algo,
|
|
82
|
+
id: 12,
|
|
44
83
|
user_id: 1,
|
|
84
|
+
display_name: "My Fancy Feed",
|
|
85
|
+
// file: add a file blob here to update the image
|
|
86
|
+
description: "This is a fancy feed with lots of logic for fun and profit.",
|
|
45
87
|
order: "new",
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
});
|
|
88
|
+
// CAUTION: this will change the feed slug and cause you to lose existing follows.
|
|
89
|
+
// but if you do it, don't worry you can set it back and it will be fixed : ).
|
|
90
|
+
record_name: "my-fancy-feed",
|
|
91
|
+
};
|
|
51
92
|
|
|
93
|
+
// send the algorithm to graze
|
|
94
|
+
const response = await graze.updateAlgorithm(manifest);
|
|
52
95
|
// publish the algorithm
|
|
53
96
|
const res = await graze.publishAlgorithm({ path: { feedId: 1234 } });
|
|
54
97
|
```
|
package/build/dts/index.d.ts
CHANGED
package/build/dts/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,MAAM,EAAS,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAC5B,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,GACvC,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GACtC,KAAK,CAAC;AAEV,qBAAa,YAAY;IACvB,OAAO,EAAE,SAAS,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,QAAQ,EAAE,SAAS,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzD,QAAQ,EAAE,SAAS,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzD,eAAe,EAAE,SAAS,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACvE,gBAAgB,EAAE,SAAS,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBAE7D,EACV,MAAM,EACN,MAAM,EACN,MAAM,GACP,EAAE;QACD,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB;CAmBF"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,MAAM,EAAS,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAC5B,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,GACvC,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GACtC,KAAK,CAAC;AAEV,qBAAa,YAAY;IACvB,OAAO,EAAE,SAAS,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,QAAQ,EAAE,SAAS,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzD,QAAQ,EAAE,SAAS,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzD,eAAe,EAAE,SAAS,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACvE,gBAAgB,EAAE,SAAS,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBAE7D,EACV,MAAM,EACN,MAAM,EACN,MAAM,GACP,EAAE;QACD,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB;CAmBF;AA0BD,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC"}
|
package/build/esm/index.js
CHANGED
package/build/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAQ/C,MAAM,OAAO,YAAY;IACvB,OAAO,CAAgD;IACvD,QAAQ,CAAiD;IACzD,QAAQ,CAAiD;IACzD,eAAe,CAAwD;IACvE,gBAAgB,CAAyD;IAEzE,YAAY,EACV,MAAM,EACN,MAAM,EACN,MAAM,GAKP;QACC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC;YACrB,CAAC,eAAe,EAAE,MAAM,CAAC;YACzB,CAAC,cAAc,EAAE,MAAM,CAAC;YACxB,CAAC,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;SACrC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CACrB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EACnC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CACtB,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC;QAC3C,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,gBAAgB,CAAC;IAC/C,CAAC;CACF;AAED,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAChC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;IAClC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAuC,EAAE,EAAE,CAC7D,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAwC,EAAE,EAAE,CAC/D,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAwC,EAAE,EAAE,CAC/D,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,CACtB,GAAG,IAA+C,EAClD,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7D,MAAM,gBAAgB,GAAG,CACvB,GAAG,IAAgD,EACnD,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAE9D,OAAO;QACL,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,eAAe;QACf,gBAAgB;KACjB,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAQ/C,MAAM,OAAO,YAAY;IACvB,OAAO,CAAgD;IACvD,QAAQ,CAAiD;IACzD,QAAQ,CAAiD;IACzD,eAAe,CAAwD;IACvE,gBAAgB,CAAyD;IAEzE,YAAY,EACV,MAAM,EACN,MAAM,EACN,MAAM,GAKP;QACC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC;YACrB,CAAC,eAAe,EAAE,MAAM,CAAC;YACzB,CAAC,cAAc,EAAE,MAAM,CAAC;YACxB,CAAC,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;SACrC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CACrB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EACnC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CACtB,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC;QAC3C,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,gBAAgB,CAAC;IAC/C,CAAC;CACF;AAED,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAChC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;IAClC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAuC,EAAE,EAAE,CAC7D,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAwC,EAAE,EAAE,CAC/D,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAwC,EAAE,EAAE,CAC/D,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,CACtB,GAAG,IAA+C,EAClD,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7D,MAAM,gBAAgB,GAAG,CACvB,GAAG,IAAgD,EACnD,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAE9D,OAAO;QACL,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,eAAe;QACf,gBAAgB;KACjB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC"}
|
package/package.json
CHANGED