@atproto/bsky 0.3.4 → 0.3.6
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/CHANGELOG.md +19 -0
- package/dist/data-plane/server/routes/moderation.js +4 -0
- package/dist/data-plane/server/routes/moderation.js.map +1 -1
- package/dist/hydration/hydrator.d.ts +1 -0
- package/dist/hydration/hydrator.d.ts.map +1 -1
- package/dist/hydration/hydrator.js +1 -1
- package/dist/hydration/hydrator.js.map +1 -1
- package/dist/hydration/label.d.ts +2 -1
- package/dist/hydration/label.d.ts.map +1 -1
- package/dist/hydration/label.js +38 -5
- package/dist/hydration/label.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lexicons/tools/ozone/queue/createQueue.defs.d.ts +2 -0
- package/dist/lexicons/tools/ozone/queue/createQueue.defs.d.ts.map +1 -1
- package/dist/lexicons/tools/ozone/queue/createQueue.defs.js +1 -1
- package/dist/lexicons/tools/ozone/queue/createQueue.defs.js.map +1 -1
- package/dist/lexicons/tools/ozone/queue/defs.defs.d.ts +4 -0
- package/dist/lexicons/tools/ozone/queue/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/tools/ozone/queue/defs.defs.js +1 -1
- package/dist/lexicons/tools/ozone/queue/defs.defs.js.map +1 -1
- package/dist/lexicons/tools/ozone/queue/updateQueue.defs.d.ts +2 -0
- package/dist/lexicons/tools/ozone/queue/updateQueue.defs.d.ts.map +1 -1
- package/dist/lexicons/tools/ozone/queue/updateQueue.defs.js +1 -1
- package/dist/lexicons/tools/ozone/queue/updateQueue.defs.js.map +1 -1
- package/dist/lexicons/tools/ozone/safelink/queryRules.defs.d.ts +6 -0
- package/dist/lexicons/tools/ozone/safelink/queryRules.defs.d.ts.map +1 -1
- package/dist/lexicons/tools/ozone/safelink/queryRules.defs.js +1 -1
- package/dist/lexicons/tools/ozone/safelink/queryRules.defs.js.map +1 -1
- package/dist/proto/bsky_connect.d.ts +12 -1
- package/dist/proto/bsky_connect.d.ts.map +1 -1
- package/dist/proto/bsky_connect.js +12 -1
- package/dist/proto/bsky_connect.js.map +1 -1
- package/dist/proto/bsky_pb.d.ts +130 -0
- package/dist/proto/bsky_pb.d.ts.map +1 -1
- package/dist/proto/bsky_pb.js +168 -0
- package/dist/proto/bsky_pb.js.map +1 -1
- package/package.json +9 -9
|
@@ -27,7 +27,8 @@ export type LabelerViewerState = {
|
|
|
27
27
|
export type LabelerViewerStates = HydrationMap<DidString, LabelerViewerState>;
|
|
28
28
|
export declare class LabelHydrator {
|
|
29
29
|
dataplane: DataPlaneClient;
|
|
30
|
-
|
|
30
|
+
private needsReviewTagSources;
|
|
31
|
+
constructor(dataplane: DataPlaneClient, needsReviewTagSources?: readonly DidString[]);
|
|
31
32
|
getLabelsForSubjects(subjects: UriString[], labelers: ParsedLabelers): Promise<Labels>;
|
|
32
33
|
getLabelers(dids: DidString[], includeTakedowns?: boolean): Promise<Labelers>;
|
|
33
34
|
getLabelerViewerStates(dids: DidString[], viewer: DidString): Promise<LabelerViewerStates>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../src/hydration/label.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,SAAS,EAEf,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EACL,YAAY,EACZ,KAAK,MAAM,EACX,KAAK,UAAU,EAIhB,MAAM,WAAW,CAAA;AAElB,YAAY,EAAE,KAAK,EAAE,CAAA;AAErB,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,EAAE,OAAO,CAAA;IACxB,WAAW,EAAE,OAAO,CAAA;IACpB,WAAW,EAAE,OAAO,CAAA;IACpB,MAAM,EAAE,YAAY,CAAC,GAAG,MAAM,KAAK,MAAM,EAAE,EAAE,KAAK,CAAC,CAAA;CACpD,CAAA;AAED,qBAAa,MACX,SAAQ,YAAY,CAAC,SAAS,EAAE,aAAa,CAC7C,YAAW,MAAM;IAEjB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,MAAM,KAAK,MAAM,EAAE,CAE/C;IACD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../src/hydration/label.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,SAAS,EAEf,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EACL,YAAY,EACZ,KAAK,MAAM,EACX,KAAK,UAAU,EAIhB,MAAM,WAAW,CAAA;AAElB,YAAY,EAAE,KAAK,EAAE,CAAA;AAErB,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,EAAE,OAAO,CAAA;IACxB,WAAW,EAAE,OAAO,CAAA;IACpB,WAAW,EAAE,OAAO,CAAA;IACpB,MAAM,EAAE,YAAY,CAAC,GAAG,MAAM,KAAK,MAAM,EAAE,EAAE,KAAK,CAAC,CAAA;CACpD,CAAA;AAED,qBAAa,MACX,SAAQ,YAAY,CAAC,SAAS,EAAE,aAAa,CAC7C,YAAW,MAAM;IAEjB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,MAAM,KAAK,MAAM,EAAE,CAE/C;IACD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAcvB;IACD,YAAY,CAAC,GAAG,EAAE,SAAS,GAAG,KAAK,EAAE,CAQpC;CACF;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;AAE7D,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,CAAA;AAC/C,MAAM,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAEvD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,CAAC,EAAE,WAAW,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAA;AAE7E,qBAAa,aAAa;IAEf,SAAS,EAAE,eAAe;IACjC,OAAO,CAAC,qBAAqB;IAF/B,YACS,SAAS,EAAE,eAAe,EACzB,qBAAqB,GAAE,SAAS,SAAS,EAAO,EACtD;IAEE,oBAAoB,CACxB,QAAQ,EAAE,SAAS,EAAE,EACrB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC,CAyFjB;IAEK,WAAW,CACf,IAAI,EAAE,SAAS,EAAE,EACjB,gBAAgB,UAAQ,GACvB,OAAO,CAAC,QAAQ,CAAC,CAkBnB;IAEK,sBAAsB,CAC1B,IAAI,EAAE,SAAS,EAAE,EACjB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,mBAAmB,CAAC,CAiB9B;IAEK,oBAAoB,CACxB,IAAI,EAAE,SAAS,EAAE,EACjB,MAAM,EAAE,SAAS,GAAG,IAAI,GACvB,OAAO,CAAC,WAAW,CAAC,CAiBtB;CACF"}
|
package/dist/hydration/label.js
CHANGED
|
@@ -11,7 +11,9 @@ export class Labels extends HydrationMap {
|
|
|
11
11
|
continue;
|
|
12
12
|
const mine = this.get(key);
|
|
13
13
|
if (mine) {
|
|
14
|
+
mine.isImpersonation = mine.isImpersonation || theirs.isImpersonation;
|
|
14
15
|
mine.isTakendown = mine.isTakendown || theirs.isTakendown;
|
|
16
|
+
mine.needsReview = mine.needsReview || theirs.needsReview;
|
|
15
17
|
mine.labels = mine.labels.merge(theirs.labels);
|
|
16
18
|
}
|
|
17
19
|
else {
|
|
@@ -33,17 +35,21 @@ export class Labels extends HydrationMap {
|
|
|
33
35
|
}
|
|
34
36
|
}
|
|
35
37
|
export class LabelHydrator {
|
|
36
|
-
constructor(dataplane) {
|
|
38
|
+
constructor(dataplane, needsReviewTagSources = []) {
|
|
37
39
|
this.dataplane = dataplane;
|
|
40
|
+
this.needsReviewTagSources = needsReviewTagSources;
|
|
38
41
|
}
|
|
39
42
|
async getLabelsForSubjects(subjects, labelers) {
|
|
40
43
|
const map = new Labels();
|
|
41
44
|
if (!subjects.length || !labelers.dids.length)
|
|
42
45
|
return map;
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
issuers: labelers.dids,
|
|
46
|
-
|
|
46
|
+
const sources = this.needsReviewTagSources.filter((source) => labelers.dids.includes(source) && labelers.redact.has(source));
|
|
47
|
+
const [res, tagRes] = await Promise.all([
|
|
48
|
+
this.dataplane.getLabels({ subjects, issuers: labelers.dids }),
|
|
49
|
+
sources.length
|
|
50
|
+
? this.dataplane.getTagsForSubjects({ subjects, sources })
|
|
51
|
+
: undefined,
|
|
52
|
+
]);
|
|
47
53
|
for (const cur of res.labels) {
|
|
48
54
|
const parsed = parseJsonBytes(com.atproto.label.defs.label, cur);
|
|
49
55
|
if (!parsed || parsed.neg)
|
|
@@ -80,6 +86,33 @@ export class LabelHydrator {
|
|
|
80
86
|
entry.isImpersonation = true;
|
|
81
87
|
}
|
|
82
88
|
}
|
|
89
|
+
if (tagRes) {
|
|
90
|
+
const requestedSubjects = new Set(subjects);
|
|
91
|
+
const now = Date.now();
|
|
92
|
+
for (const tag of tagRes.tags) {
|
|
93
|
+
if (tag.value !== NEEDS_REVIEW_LABEL ||
|
|
94
|
+
tag.removed ||
|
|
95
|
+
!tag.event ||
|
|
96
|
+
!sources.includes(tag.event.source) ||
|
|
97
|
+
!requestedSubjects.has(tag.subject) ||
|
|
98
|
+
(tag.expiresAt && tag.expiresAt.toDate().getTime() <= now)) {
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
const subject = tag.subject;
|
|
102
|
+
const entry = map.get(subject);
|
|
103
|
+
if (entry) {
|
|
104
|
+
entry.needsReview = true;
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
map.set(subject, {
|
|
108
|
+
isImpersonation: false,
|
|
109
|
+
isTakendown: false,
|
|
110
|
+
needsReview: true,
|
|
111
|
+
labels: new HydrationMap(),
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
83
116
|
return map;
|
|
84
117
|
}
|
|
85
118
|
async getLabelers(dids, includeTakedowns = false) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"label.js","sourceRoot":"","sources":["../../src/hydration/label.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type AtUriString,\n type DidString,\n type UriString,\n atUri,\n} from '@atproto/lex'\nimport type { DataPlaneClient } from '../data-plane/client/index.js'\nimport { app, com } from '../lexicons/index.js'\nimport type { ParsedLabelers } from '../util.js'\nimport type { Label, LabelerRecord } from '../views/types.js'\nimport {\n HydrationMap,\n type Merges,\n type RecordInfo,\n parseJsonBytes,\n parseRecord,\n parseString,\n} from './util.js'\n\nexport type { Label }\n\nexport type SubjectLabels = {\n isImpersonation: boolean\n isTakendown: boolean\n needsReview: boolean\n labels: HydrationMap<`${string}::${string}`, Label> // src + val -> label\n}\n\nexport class Labels\n extends HydrationMap<UriString, SubjectLabels>\n implements Merges\n{\n static key(label: Label): `${string}::${string}` {\n return `${label.src}::${label.val}`\n }\n merge(map: Labels): this {\n for (const [key, theirs] of map) {\n if (!theirs) continue\n const mine = this.get(key)\n if (mine) {\n mine.isTakendown = mine.isTakendown || theirs.isTakendown\n mine.labels = mine.labels.merge(theirs.labels)\n } else {\n this.set(key, theirs)\n }\n }\n return this\n }\n getBySubject(sub: UriString): Label[] {\n const it = this.get(sub)?.labels.values()\n if (!it) return []\n const labels: Label[] = []\n for (const label of it) {\n if (label) labels.push(label)\n }\n return labels\n }\n}\n\nexport type LabelerAgg = {\n likes: number\n}\n\nexport type LabelerAggs = HydrationMap<DidString, LabelerAgg>\n\nexport type Labeler = RecordInfo<LabelerRecord>\nexport type Labelers = HydrationMap<DidString, Labeler>\n\nexport type LabelerViewerState = {\n like?: AtUriString\n}\n\nexport type LabelerViewerStates = HydrationMap<DidString, LabelerViewerState>\n\nexport class LabelHydrator {\n constructor(public dataplane: DataPlaneClient) {}\n\n async getLabelsForSubjects(\n subjects: UriString[],\n labelers: ParsedLabelers,\n ): Promise<Labels> {\n const map = new Labels()\n\n if (!subjects.length || !labelers.dids.length) return map\n\n const res = await this.dataplane.getLabels({\n subjects,\n issuers: labelers.dids,\n })\n\n for (const cur of res.labels) {\n const parsed = parseJsonBytes(com.atproto.label.defs.label, cur)\n if (!parsed || parsed.neg) continue\n const { sig: _, ...label } = parsed\n let entry = map.get(label.uri)\n if (!entry) {\n entry = {\n isImpersonation: false,\n isTakendown: false,\n needsReview: false,\n labels: new HydrationMap(),\n }\n map.set(label.uri, entry)\n }\n\n const isActionableNeedsReview =\n label.val === NEEDS_REVIEW_LABEL &&\n !label.neg &&\n labelers.redact.has(label.src)\n\n // we action needs review labels on backend for now so don't send to client until client has proper logic for them\n if (!isActionableNeedsReview) {\n entry.labels.set(Labels.key(label), label)\n }\n\n if (\n TAKEDOWN_LABELS.includes(label.val) &&\n !label.neg &&\n labelers.redact.has(label.src)\n ) {\n entry.isTakendown = true\n }\n if (isActionableNeedsReview) {\n entry.needsReview = true\n }\n if (\n label.val === IMPERSONATION_LABEL &&\n !label.neg &&\n labelers.redact.has(label.src)\n ) {\n entry.isImpersonation = true\n }\n }\n\n return map\n }\n\n async getLabelers(\n dids: DidString[],\n includeTakedowns = false,\n ): Promise<Labelers> {\n const map: Labelers = new HydrationMap()\n if (!dids.length) return map\n\n const res = await this.dataplane.getLabelerRecords({\n uris: dids.map(labelerDidToUri),\n })\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n const record = parseRecord(\n app.bsky.labeler.service.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(did, record ?? null)\n }\n\n return map\n }\n\n async getLabelerViewerStates(\n dids: DidString[],\n viewer: DidString,\n ): Promise<LabelerViewerStates> {\n const map: LabelerViewerStates = new HydrationMap()\n if (!dids.length) return map\n\n const likes = await this.dataplane.getLikesByActorAndSubjects({\n actorDid: viewer,\n refs: dids.map((did) => ({ uri: labelerDidToUri(did) })),\n })\n\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n map.set(did, {\n like: parseString(likes.uris[i]),\n })\n }\n\n return map\n }\n\n async getLabelerAggregates(\n dids: DidString[],\n viewer: DidString | null,\n ): Promise<LabelerAggs> {\n const map: LabelerAggs = new HydrationMap()\n if (!dids.length) return map\n\n const refs = dids.map((did) => ({ uri: labelerDidToUri(did) }))\n const counts = await this.dataplane.getInteractionCounts({\n refs,\n skipCacheForDids: viewer ? [viewer] : undefined,\n })\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n map.set(did, {\n likes: counts.likes[i] ?? 0,\n })\n }\n\n return map\n }\n}\n\nfunction labelerDidToUri<T extends DidString>(did: T) {\n return atUri(did, app.bsky.labeler.service)\n}\n\nconst IMPERSONATION_LABEL = 'impersonation'\nconst TAKEDOWN_LABELS = ['!takedown', '!suspend']\nconst NEEDS_REVIEW_LABEL = 'needs-review'\n"]}
|
|
1
|
+
{"version":3,"file":"label.js","sourceRoot":"","sources":["../../src/hydration/label.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type AtUriString,\n type DidString,\n type UriString,\n atUri,\n} from '@atproto/lex'\nimport type { DataPlaneClient } from '../data-plane/client/index.js'\nimport { app, com } from '../lexicons/index.js'\nimport type { ParsedLabelers } from '../util.js'\nimport type { Label, LabelerRecord } from '../views/types.js'\nimport {\n HydrationMap,\n type Merges,\n type RecordInfo,\n parseJsonBytes,\n parseRecord,\n parseString,\n} from './util.js'\n\nexport type { Label }\n\nexport type SubjectLabels = {\n isImpersonation: boolean\n isTakendown: boolean\n needsReview: boolean\n labels: HydrationMap<`${string}::${string}`, Label> // src + val -> label\n}\n\nexport class Labels\n extends HydrationMap<UriString, SubjectLabels>\n implements Merges\n{\n static key(label: Label): `${string}::${string}` {\n return `${label.src}::${label.val}`\n }\n merge(map: Labels): this {\n for (const [key, theirs] of map) {\n if (!theirs) continue\n const mine = this.get(key)\n if (mine) {\n mine.isImpersonation = mine.isImpersonation || theirs.isImpersonation\n mine.isTakendown = mine.isTakendown || theirs.isTakendown\n mine.needsReview = mine.needsReview || theirs.needsReview\n mine.labels = mine.labels.merge(theirs.labels)\n } else {\n this.set(key, theirs)\n }\n }\n return this\n }\n getBySubject(sub: UriString): Label[] {\n const it = this.get(sub)?.labels.values()\n if (!it) return []\n const labels: Label[] = []\n for (const label of it) {\n if (label) labels.push(label)\n }\n return labels\n }\n}\n\nexport type LabelerAgg = {\n likes: number\n}\n\nexport type LabelerAggs = HydrationMap<DidString, LabelerAgg>\n\nexport type Labeler = RecordInfo<LabelerRecord>\nexport type Labelers = HydrationMap<DidString, Labeler>\n\nexport type LabelerViewerState = {\n like?: AtUriString\n}\n\nexport type LabelerViewerStates = HydrationMap<DidString, LabelerViewerState>\n\nexport class LabelHydrator {\n constructor(\n public dataplane: DataPlaneClient,\n private needsReviewTagSources: readonly DidString[] = [],\n ) {}\n\n async getLabelsForSubjects(\n subjects: UriString[],\n labelers: ParsedLabelers,\n ): Promise<Labels> {\n const map = new Labels()\n\n if (!subjects.length || !labelers.dids.length) return map\n\n const sources = this.needsReviewTagSources.filter(\n (source) => labelers.dids.includes(source) && labelers.redact.has(source),\n )\n const [res, tagRes] = await Promise.all([\n this.dataplane.getLabels({ subjects, issuers: labelers.dids }),\n sources.length\n ? this.dataplane.getTagsForSubjects({ subjects, sources })\n : undefined,\n ])\n\n for (const cur of res.labels) {\n const parsed = parseJsonBytes(com.atproto.label.defs.label, cur)\n if (!parsed || parsed.neg) continue\n const { sig: _, ...label } = parsed\n let entry = map.get(label.uri)\n if (!entry) {\n entry = {\n isImpersonation: false,\n isTakendown: false,\n needsReview: false,\n labels: new HydrationMap(),\n }\n map.set(label.uri, entry)\n }\n\n const isActionableNeedsReview =\n label.val === NEEDS_REVIEW_LABEL &&\n !label.neg &&\n labelers.redact.has(label.src)\n\n // we action needs review labels on backend for now so don't send to client until client has proper logic for them\n if (!isActionableNeedsReview) {\n entry.labels.set(Labels.key(label), label)\n }\n\n if (\n TAKEDOWN_LABELS.includes(label.val) &&\n !label.neg &&\n labelers.redact.has(label.src)\n ) {\n entry.isTakendown = true\n }\n if (isActionableNeedsReview) {\n entry.needsReview = true\n }\n if (\n label.val === IMPERSONATION_LABEL &&\n !label.neg &&\n labelers.redact.has(label.src)\n ) {\n entry.isImpersonation = true\n }\n }\n\n if (tagRes) {\n const requestedSubjects = new Set<string>(subjects)\n const now = Date.now()\n for (const tag of tagRes.tags) {\n if (\n tag.value !== NEEDS_REVIEW_LABEL ||\n tag.removed ||\n !tag.event ||\n !sources.includes(tag.event.source as DidString) ||\n !requestedSubjects.has(tag.subject) ||\n (tag.expiresAt && tag.expiresAt.toDate().getTime() <= now)\n ) {\n continue\n }\n const subject = tag.subject as UriString\n const entry = map.get(subject)\n if (entry) {\n entry.needsReview = true\n } else {\n map.set(subject, {\n isImpersonation: false,\n isTakendown: false,\n needsReview: true,\n labels: new HydrationMap(),\n })\n }\n }\n }\n\n return map\n }\n\n async getLabelers(\n dids: DidString[],\n includeTakedowns = false,\n ): Promise<Labelers> {\n const map: Labelers = new HydrationMap()\n if (!dids.length) return map\n\n const res = await this.dataplane.getLabelerRecords({\n uris: dids.map(labelerDidToUri),\n })\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n const record = parseRecord(\n app.bsky.labeler.service.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(did, record ?? null)\n }\n\n return map\n }\n\n async getLabelerViewerStates(\n dids: DidString[],\n viewer: DidString,\n ): Promise<LabelerViewerStates> {\n const map: LabelerViewerStates = new HydrationMap()\n if (!dids.length) return map\n\n const likes = await this.dataplane.getLikesByActorAndSubjects({\n actorDid: viewer,\n refs: dids.map((did) => ({ uri: labelerDidToUri(did) })),\n })\n\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n map.set(did, {\n like: parseString(likes.uris[i]),\n })\n }\n\n return map\n }\n\n async getLabelerAggregates(\n dids: DidString[],\n viewer: DidString | null,\n ): Promise<LabelerAggs> {\n const map: LabelerAggs = new HydrationMap()\n if (!dids.length) return map\n\n const refs = dids.map((did) => ({ uri: labelerDidToUri(did) }))\n const counts = await this.dataplane.getInteractionCounts({\n refs,\n skipCacheForDids: viewer ? [viewer] : undefined,\n })\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n map.set(did, {\n likes: counts.likes[i] ?? 0,\n })\n }\n\n return map\n }\n}\n\nfunction labelerDidToUri<T extends DidString>(did: T) {\n return atUri(did, app.bsky.labeler.service)\n}\n\nconst IMPERSONATION_LABEL = 'impersonation'\nconst TAKEDOWN_LABELS = ['!takedown', '!suspend']\nconst NEEDS_REVIEW_LABEL = 'needs-review'\n"]}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAKjC,OAAO,OAAO,MAAM,SAAS,CAAA;AAG7B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAc9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAsBzC,OAAO,EACL,KAAK,WAAW,EAGjB,MAAM,aAAa,CAAA;AAIpB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,qBAAa,WAAW;IACf,GAAG,EAAE,UAAU,CAAA;IACf,GAAG,EAAE,OAAO,CAAC,WAAW,CAAA;IACxB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAA;IAC3B,OAAO,CAAC,UAAU,CAAC,CAAgB;IACnC,OAAO,CAAC,WAAW,CAAe;IAElC,YAAY,IAAI,EAAE;QAChB,GAAG,EAAE,UAAU,CAAA;QACf,GAAG,EAAE,OAAO,CAAC,WAAW,CAAA;QACxB,WAAW,CAAC,EAAE,WAAW,EAAE,CAAA;KAC5B,EAIA;IAED,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,MAAM,EAAE,YAAY,CAAA;QACpB,UAAU,EAAE,OAAO,CAAA;KACpB,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAKjC,OAAO,OAAO,MAAM,SAAS,CAAA;AAG7B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAc9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAsBzC,OAAO,EACL,KAAK,WAAW,EAGjB,MAAM,aAAa,CAAA;AAIpB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,qBAAa,WAAW;IACf,GAAG,EAAE,UAAU,CAAA;IACf,GAAG,EAAE,OAAO,CAAC,WAAW,CAAA;IACxB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAA;IAC3B,OAAO,CAAC,UAAU,CAAC,CAAgB;IACnC,OAAO,CAAC,WAAW,CAAe;IAElC,YAAY,IAAI,EAAE;QAChB,GAAG,EAAE,UAAU,CAAA;QACf,GAAG,EAAE,OAAO,CAAC,WAAW,CAAA;QACxB,WAAW,CAAC,EAAE,WAAW,EAAE,CAAA;KAC5B,EAIA;IAED,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,MAAM,EAAE,YAAY,CAAA;QACpB,UAAU,EAAE,OAAO,CAAA;KACpB,GAAG,WAAW,CAiPd;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAalC;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAc7B;IAEK,CAAC,MAAM,CAAC,YAAY,CAAC,kBAE1B;CACF;eAEc,WAAW"}
|
package/dist/index.js
CHANGED
|
@@ -135,6 +135,7 @@ export class BskyAppView {
|
|
|
135
135
|
const hydrator = new Hydrator(dataplane, config.labelsFromIssuerDids, {
|
|
136
136
|
debugFieldAllowedDids: config.debugFieldAllowedDids,
|
|
137
137
|
featureGatesClient,
|
|
138
|
+
needsReviewTagSources: [config.modServiceDid],
|
|
138
139
|
});
|
|
139
140
|
const views = new Views({
|
|
140
141
|
imgUriBuilder: imgUriBuilder,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import events from 'node:events'\nimport type http from 'node:http'\nimport type { AddressInfo } from 'node:net'\nimport compression from 'compression'\nimport cors from 'cors'\nimport { Etcd3 } from 'etcd3'\nimport express from 'express'\nimport { type HttpTerminator, createHttpTerminator } from 'http-terminator'\nimport { DAY, SECOND } from '@atproto/common'\nimport type { Keypair } from '@atproto/crypto'\nimport { IdResolver } from '@atproto/identity'\nimport { Client } from '@atproto/lex'\nimport { createServer } from '@atproto/xrpc-server'\nimport { createBlobDispatcher } from './api/blob-dispatcher.js'\nimport API, {\n blobResolver,\n external,\n health,\n sitemap,\n wellKnown,\n} from './api/index.js'\nimport { AuthVerifier, createPublicKeyObject } from './auth-verifier.js'\nimport { authWithApiKey as bsyncAuth, createBsyncClient } from './bsync.js'\nimport type { ServerConfig } from './config.js'\nimport { AppContext } from './context.js'\nimport {\n authWithApiKey as courierAuth,\n createCourierClient,\n} from './courier.js'\nimport {\n BasicHostList,\n EtcdHostList,\n createDataPlaneClient,\n} from './data-plane/client/index.js'\nimport * as error from './error.js'\nimport { FeatureGatesClient } from './feature-gates/index.js'\nimport { Hydrator } from './hydration/hydrator.js'\nimport * as imageServer from './image/server.js'\nimport { ImageUriBuilder } from './image/uri.js'\nimport { createKwsClient } from './kws.js'\nimport { loggerMiddleware } from './logger.js'\nimport {\n authWithApiKey as rolodexAuth,\n createRolodexClient,\n} from './rolodex.js'\nimport { createStashClient } from './stash.js'\nimport {\n type UndiciAgent,\n createUndiciAgent,\n dispatcherFetch,\n} from './undici.js'\nimport { Views } from './views/index.js'\nimport { VideoUriBuilder } from './views/util.js'\n\nexport { ServerConfig } from './config.js'\nexport type { ServerConfigValues } from './config.js'\nexport { AppContext } from './context.js'\nexport * from './data-plane/index.js'\nexport { BackgroundQueue } from './data-plane/server/background.js'\nexport { Database } from './data-plane/server/db/index.js'\nexport { Redis } from './redis.js'\n\nexport class BskyAppView {\n public ctx: AppContext\n public app: express.Application\n public server?: http.Server\n private terminator?: HttpTerminator\n private dispatchers: UndiciAgent[]\n\n constructor(opts: {\n ctx: AppContext\n app: express.Application\n dispatchers?: UndiciAgent[]\n }) {\n this.ctx = opts.ctx\n this.app = opts.app\n this.dispatchers = opts.dispatchers ?? []\n }\n\n static create(opts: {\n config: ServerConfig\n signingKey: Keypair\n }): BskyAppView {\n const { config, signingKey } = opts\n const app = express()\n app.set('trust proxy', true)\n app.use(cors({ maxAge: DAY / SECOND }))\n app.use(loggerMiddleware)\n app.use(compression())\n\n // used solely for handle resolution: identity lookups occur on dataplane\n const idResolver = new IdResolver({\n plcUrl: config.didPlcUrl,\n backupNameservers: config.handleResolveNameservers,\n fetch: config.disableSsrfProtection ? globalThis.fetch : undefined,\n })\n\n const imgUriBuilderUrl =\n config.cdnUrl ||\n (config.publicUrl ? `${config.publicUrl}/img` : undefined)\n if (!imgUriBuilderUrl) {\n throw new Error('No image URI builder URL could be determined')\n }\n const imgUriBuilder = new ImageUriBuilder(imgUriBuilderUrl)\n const videoUriBuilder = new VideoUriBuilder({\n playlistUrlPattern:\n config.videoPlaylistUrlPattern ||\n `${config.publicUrl}/vid/%s/%s/playlist.m3u8`,\n thumbnailUrlPattern:\n config.videoThumbnailUrlPattern ||\n `${config.publicUrl}/vid/%s/%s/thumbnail.jpg`,\n })\n\n const searchClient = config.searchUrl\n ? new Client(\n {\n service: config.searchUrl,\n },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: config.debugMode,\n },\n )\n : undefined\n\n const suggestionsClient = config.suggestionsUrl\n ? new Client(\n {\n service: config.suggestionsUrl,\n headers: config.suggestionsApiKey\n ? { authorization: `Bearer ${config.suggestionsApiKey}` }\n : undefined,\n },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: config.debugMode,\n },\n )\n : undefined\n\n // @NOTE These bound the connection phase (TCP + TLS) only; once connected,\n // the request is not bounded here. They are kept for the lifetime of the\n // service (pooling connections), and closed on `destroy()`.\n // An unused agent holds no socket, so they can be built unconditionally.\n const topicsDispatcher = createUndiciAgent({ connectTimeout: SECOND })\n const irisDispatcher = createUndiciAgent({ connectTimeout: SECOND })\n\n const topicsClient = config.topicsUrl\n ? new Client(\n {\n service: config.topicsUrl,\n headers: config.topicsApiKey\n ? { authorization: `Bearer ${config.topicsApiKey}` }\n : undefined,\n fetch: dispatcherFetch(topicsDispatcher),\n },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: config.debugMode,\n },\n )\n : undefined\n\n const irisClient = config.irisUrl\n ? new Client(\n {\n service: config.irisUrl,\n headers: config.irisApiKey\n ? { authorization: `Bearer ${config.irisApiKey}` }\n : undefined,\n fetch: dispatcherFetch(irisDispatcher),\n },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: config.debugMode,\n },\n )\n : undefined\n\n const etcd = config.etcdHosts.length\n ? new Etcd3({ hosts: config.etcdHosts })\n : undefined\n\n const dataplaneHostList =\n etcd && config.dataplaneUrlsEtcdKeyPrefix\n ? new EtcdHostList(\n etcd,\n config.dataplaneUrlsEtcdKeyPrefix,\n config.dataplaneUrls,\n )\n : new BasicHostList(config.dataplaneUrls)\n\n const featureGatesClient = new FeatureGatesClient({\n growthBookApiHost: config.growthBookApiHost,\n growthBookClientKey: config.growthBookClientKey,\n eventProxyTrackingEndpoint: config.eventProxyTrackingEndpoint,\n })\n\n const dataplane = createDataPlaneClient(dataplaneHostList, {\n httpVersion: config.dataplaneHttpVersion,\n rejectUnauthorized: !config.dataplaneIgnoreBadTls,\n })\n const hydrator = new Hydrator(dataplane, config.labelsFromIssuerDids, {\n debugFieldAllowedDids: config.debugFieldAllowedDids,\n featureGatesClient,\n })\n const views = new Views({\n imgUriBuilder: imgUriBuilder,\n videoUriBuilder: videoUriBuilder,\n indexedAtEpoch: config.indexedAtEpoch,\n threadTagsBumpDown: [...config.threadTagsBumpDown],\n threadTagsHide: [...config.threadTagsHide],\n visibilityTagHide: config.visibilityTagHide,\n visibilityTagRankPrefix: config.visibilityTagRankPrefix,\n })\n\n const bsyncClient = createBsyncClient({\n baseUrl: config.bsyncUrl,\n httpVersion: config.bsyncHttpVersion ?? '2',\n nodeOptions: { rejectUnauthorized: !config.bsyncIgnoreBadTls },\n interceptors: config.bsyncApiKey ? [bsyncAuth(config.bsyncApiKey)] : [],\n })\n\n const stashClient = createStashClient(bsyncClient)\n\n const courierClient = config.courierUrl\n ? createCourierClient({\n baseUrl: config.courierUrl,\n httpVersion: config.courierHttpVersion ?? '2',\n nodeOptions: { rejectUnauthorized: !config.courierIgnoreBadTls },\n interceptors: config.courierApiKey\n ? [courierAuth(config.courierApiKey)]\n : [],\n })\n : undefined\n\n const rolodexClient = config.rolodexUrl\n ? createRolodexClient({\n baseUrl: config.rolodexUrl,\n httpVersion: config.rolodexHttpVersion ?? '2',\n nodeOptions: { rejectUnauthorized: !config.rolodexIgnoreBadTls },\n interceptors: config.rolodexApiKey\n ? [rolodexAuth(config.rolodexApiKey)]\n : [],\n })\n : undefined\n\n const kwsClient = config.kws ? createKwsClient(config.kws) : undefined\n\n const entrywayJwtPublicKey = config.entrywayJwtPublicKeyHex\n ? createPublicKeyObject(config.entrywayJwtPublicKeyHex)\n : undefined\n const bffJwtSecret = config.bffJwtSecret\n ? Buffer.from(config.bffJwtSecret, 'utf8')\n : undefined\n const authVerifier = new AuthVerifier(dataplane, {\n ownDid: config.serverDid,\n alternateAudienceDids: config.alternateAudienceDids,\n modServiceDid: config.modServiceDid,\n adminPasses: config.adminPasswords,\n entrywayJwtPublicKey,\n bffJwtSecret,\n })\n\n const blobDispatcher = createBlobDispatcher(config)\n\n const ctx = new AppContext({\n cfg: config,\n etcd,\n dataplane,\n dataplaneHostList,\n searchClient,\n suggestionsClient,\n topicsClient,\n irisClient,\n hydrator,\n views,\n signingKey,\n idResolver,\n bsyncClient,\n stashClient,\n courierClient,\n rolodexClient,\n authVerifier,\n featureGatesClient,\n blobDispatcher,\n kwsClient,\n })\n\n const server = createServer([], {\n validateResponse: config.debugMode,\n payload: {\n jsonLimit: 100 * 1024, // 100kb\n textLimit: 100 * 1024, // 100kb\n blobLimit: 5 * 1024 * 1024, // 5mb\n },\n })\n\n API(server, ctx)\n\n app.use(health.createRouter(ctx))\n app.use(wellKnown.createRouter(ctx))\n app.use(blobResolver.createMiddleware(ctx))\n app.use(imageServer.createMiddleware(ctx, { prefix: '/img/' }))\n\n if (config.dataplaneUrls.length > 0 || config.dataplaneUrlsEtcdKeyPrefix) {\n app.use(sitemap.createRouter(ctx))\n }\n\n app.use(server.router)\n app.use(error.handler)\n app.use('/external', external.createRouter(ctx))\n\n return new BskyAppView({\n ctx,\n app,\n dispatchers: [topicsDispatcher, irisDispatcher],\n })\n }\n\n async start(): Promise<http.Server> {\n if (this.ctx.dataplaneHostList instanceof EtcdHostList) {\n await this.ctx.dataplaneHostList.connect()\n }\n this.ctx.featureGatesClient.start() // lazy, no await\n const server = this.app.listen(this.ctx.cfg.port)\n this.server = server\n server.keepAliveTimeout = 90000\n this.terminator = createHttpTerminator({ server })\n await events.once(server, 'listening')\n const { port } = server.address() as AddressInfo\n this.ctx.cfg.assignPort(port)\n return server\n }\n\n async destroy(): Promise<void> {\n try {\n await this.ctx.featureGatesClient.destroy()\n } finally {\n try {\n await this.terminator?.terminate()\n } finally {\n try {\n await this.ctx.etcd?.close()\n } finally {\n await Promise.all(this.dispatchers.map((d) => d.close()))\n }\n }\n }\n }\n\n async [Symbol.asyncDispose]() {\n await this.destroy()\n }\n}\n\nexport default BskyAppView\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import events from 'node:events'\nimport type http from 'node:http'\nimport type { AddressInfo } from 'node:net'\nimport compression from 'compression'\nimport cors from 'cors'\nimport { Etcd3 } from 'etcd3'\nimport express from 'express'\nimport { type HttpTerminator, createHttpTerminator } from 'http-terminator'\nimport { DAY, SECOND } from '@atproto/common'\nimport type { Keypair } from '@atproto/crypto'\nimport { IdResolver } from '@atproto/identity'\nimport { Client } from '@atproto/lex'\nimport { createServer } from '@atproto/xrpc-server'\nimport { createBlobDispatcher } from './api/blob-dispatcher.js'\nimport API, {\n blobResolver,\n external,\n health,\n sitemap,\n wellKnown,\n} from './api/index.js'\nimport { AuthVerifier, createPublicKeyObject } from './auth-verifier.js'\nimport { authWithApiKey as bsyncAuth, createBsyncClient } from './bsync.js'\nimport type { ServerConfig } from './config.js'\nimport { AppContext } from './context.js'\nimport {\n authWithApiKey as courierAuth,\n createCourierClient,\n} from './courier.js'\nimport {\n BasicHostList,\n EtcdHostList,\n createDataPlaneClient,\n} from './data-plane/client/index.js'\nimport * as error from './error.js'\nimport { FeatureGatesClient } from './feature-gates/index.js'\nimport { Hydrator } from './hydration/hydrator.js'\nimport * as imageServer from './image/server.js'\nimport { ImageUriBuilder } from './image/uri.js'\nimport { createKwsClient } from './kws.js'\nimport { loggerMiddleware } from './logger.js'\nimport {\n authWithApiKey as rolodexAuth,\n createRolodexClient,\n} from './rolodex.js'\nimport { createStashClient } from './stash.js'\nimport {\n type UndiciAgent,\n createUndiciAgent,\n dispatcherFetch,\n} from './undici.js'\nimport { Views } from './views/index.js'\nimport { VideoUriBuilder } from './views/util.js'\n\nexport { ServerConfig } from './config.js'\nexport type { ServerConfigValues } from './config.js'\nexport { AppContext } from './context.js'\nexport * from './data-plane/index.js'\nexport { BackgroundQueue } from './data-plane/server/background.js'\nexport { Database } from './data-plane/server/db/index.js'\nexport { Redis } from './redis.js'\n\nexport class BskyAppView {\n public ctx: AppContext\n public app: express.Application\n public server?: http.Server\n private terminator?: HttpTerminator\n private dispatchers: UndiciAgent[]\n\n constructor(opts: {\n ctx: AppContext\n app: express.Application\n dispatchers?: UndiciAgent[]\n }) {\n this.ctx = opts.ctx\n this.app = opts.app\n this.dispatchers = opts.dispatchers ?? []\n }\n\n static create(opts: {\n config: ServerConfig\n signingKey: Keypair\n }): BskyAppView {\n const { config, signingKey } = opts\n const app = express()\n app.set('trust proxy', true)\n app.use(cors({ maxAge: DAY / SECOND }))\n app.use(loggerMiddleware)\n app.use(compression())\n\n // used solely for handle resolution: identity lookups occur on dataplane\n const idResolver = new IdResolver({\n plcUrl: config.didPlcUrl,\n backupNameservers: config.handleResolveNameservers,\n fetch: config.disableSsrfProtection ? globalThis.fetch : undefined,\n })\n\n const imgUriBuilderUrl =\n config.cdnUrl ||\n (config.publicUrl ? `${config.publicUrl}/img` : undefined)\n if (!imgUriBuilderUrl) {\n throw new Error('No image URI builder URL could be determined')\n }\n const imgUriBuilder = new ImageUriBuilder(imgUriBuilderUrl)\n const videoUriBuilder = new VideoUriBuilder({\n playlistUrlPattern:\n config.videoPlaylistUrlPattern ||\n `${config.publicUrl}/vid/%s/%s/playlist.m3u8`,\n thumbnailUrlPattern:\n config.videoThumbnailUrlPattern ||\n `${config.publicUrl}/vid/%s/%s/thumbnail.jpg`,\n })\n\n const searchClient = config.searchUrl\n ? new Client(\n {\n service: config.searchUrl,\n },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: config.debugMode,\n },\n )\n : undefined\n\n const suggestionsClient = config.suggestionsUrl\n ? new Client(\n {\n service: config.suggestionsUrl,\n headers: config.suggestionsApiKey\n ? { authorization: `Bearer ${config.suggestionsApiKey}` }\n : undefined,\n },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: config.debugMode,\n },\n )\n : undefined\n\n // @NOTE These bound the connection phase (TCP + TLS) only; once connected,\n // the request is not bounded here. They are kept for the lifetime of the\n // service (pooling connections), and closed on `destroy()`.\n // An unused agent holds no socket, so they can be built unconditionally.\n const topicsDispatcher = createUndiciAgent({ connectTimeout: SECOND })\n const irisDispatcher = createUndiciAgent({ connectTimeout: SECOND })\n\n const topicsClient = config.topicsUrl\n ? new Client(\n {\n service: config.topicsUrl,\n headers: config.topicsApiKey\n ? { authorization: `Bearer ${config.topicsApiKey}` }\n : undefined,\n fetch: dispatcherFetch(topicsDispatcher),\n },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: config.debugMode,\n },\n )\n : undefined\n\n const irisClient = config.irisUrl\n ? new Client(\n {\n service: config.irisUrl,\n headers: config.irisApiKey\n ? { authorization: `Bearer ${config.irisApiKey}` }\n : undefined,\n fetch: dispatcherFetch(irisDispatcher),\n },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: config.debugMode,\n },\n )\n : undefined\n\n const etcd = config.etcdHosts.length\n ? new Etcd3({ hosts: config.etcdHosts })\n : undefined\n\n const dataplaneHostList =\n etcd && config.dataplaneUrlsEtcdKeyPrefix\n ? new EtcdHostList(\n etcd,\n config.dataplaneUrlsEtcdKeyPrefix,\n config.dataplaneUrls,\n )\n : new BasicHostList(config.dataplaneUrls)\n\n const featureGatesClient = new FeatureGatesClient({\n growthBookApiHost: config.growthBookApiHost,\n growthBookClientKey: config.growthBookClientKey,\n eventProxyTrackingEndpoint: config.eventProxyTrackingEndpoint,\n })\n\n const dataplane = createDataPlaneClient(dataplaneHostList, {\n httpVersion: config.dataplaneHttpVersion,\n rejectUnauthorized: !config.dataplaneIgnoreBadTls,\n })\n const hydrator = new Hydrator(dataplane, config.labelsFromIssuerDids, {\n debugFieldAllowedDids: config.debugFieldAllowedDids,\n featureGatesClient,\n needsReviewTagSources: [config.modServiceDid],\n })\n const views = new Views({\n imgUriBuilder: imgUriBuilder,\n videoUriBuilder: videoUriBuilder,\n indexedAtEpoch: config.indexedAtEpoch,\n threadTagsBumpDown: [...config.threadTagsBumpDown],\n threadTagsHide: [...config.threadTagsHide],\n visibilityTagHide: config.visibilityTagHide,\n visibilityTagRankPrefix: config.visibilityTagRankPrefix,\n })\n\n const bsyncClient = createBsyncClient({\n baseUrl: config.bsyncUrl,\n httpVersion: config.bsyncHttpVersion ?? '2',\n nodeOptions: { rejectUnauthorized: !config.bsyncIgnoreBadTls },\n interceptors: config.bsyncApiKey ? [bsyncAuth(config.bsyncApiKey)] : [],\n })\n\n const stashClient = createStashClient(bsyncClient)\n\n const courierClient = config.courierUrl\n ? createCourierClient({\n baseUrl: config.courierUrl,\n httpVersion: config.courierHttpVersion ?? '2',\n nodeOptions: { rejectUnauthorized: !config.courierIgnoreBadTls },\n interceptors: config.courierApiKey\n ? [courierAuth(config.courierApiKey)]\n : [],\n })\n : undefined\n\n const rolodexClient = config.rolodexUrl\n ? createRolodexClient({\n baseUrl: config.rolodexUrl,\n httpVersion: config.rolodexHttpVersion ?? '2',\n nodeOptions: { rejectUnauthorized: !config.rolodexIgnoreBadTls },\n interceptors: config.rolodexApiKey\n ? [rolodexAuth(config.rolodexApiKey)]\n : [],\n })\n : undefined\n\n const kwsClient = config.kws ? createKwsClient(config.kws) : undefined\n\n const entrywayJwtPublicKey = config.entrywayJwtPublicKeyHex\n ? createPublicKeyObject(config.entrywayJwtPublicKeyHex)\n : undefined\n const bffJwtSecret = config.bffJwtSecret\n ? Buffer.from(config.bffJwtSecret, 'utf8')\n : undefined\n const authVerifier = new AuthVerifier(dataplane, {\n ownDid: config.serverDid,\n alternateAudienceDids: config.alternateAudienceDids,\n modServiceDid: config.modServiceDid,\n adminPasses: config.adminPasswords,\n entrywayJwtPublicKey,\n bffJwtSecret,\n })\n\n const blobDispatcher = createBlobDispatcher(config)\n\n const ctx = new AppContext({\n cfg: config,\n etcd,\n dataplane,\n dataplaneHostList,\n searchClient,\n suggestionsClient,\n topicsClient,\n irisClient,\n hydrator,\n views,\n signingKey,\n idResolver,\n bsyncClient,\n stashClient,\n courierClient,\n rolodexClient,\n authVerifier,\n featureGatesClient,\n blobDispatcher,\n kwsClient,\n })\n\n const server = createServer([], {\n validateResponse: config.debugMode,\n payload: {\n jsonLimit: 100 * 1024, // 100kb\n textLimit: 100 * 1024, // 100kb\n blobLimit: 5 * 1024 * 1024, // 5mb\n },\n })\n\n API(server, ctx)\n\n app.use(health.createRouter(ctx))\n app.use(wellKnown.createRouter(ctx))\n app.use(blobResolver.createMiddleware(ctx))\n app.use(imageServer.createMiddleware(ctx, { prefix: '/img/' }))\n\n if (config.dataplaneUrls.length > 0 || config.dataplaneUrlsEtcdKeyPrefix) {\n app.use(sitemap.createRouter(ctx))\n }\n\n app.use(server.router)\n app.use(error.handler)\n app.use('/external', external.createRouter(ctx))\n\n return new BskyAppView({\n ctx,\n app,\n dispatchers: [topicsDispatcher, irisDispatcher],\n })\n }\n\n async start(): Promise<http.Server> {\n if (this.ctx.dataplaneHostList instanceof EtcdHostList) {\n await this.ctx.dataplaneHostList.connect()\n }\n this.ctx.featureGatesClient.start() // lazy, no await\n const server = this.app.listen(this.ctx.cfg.port)\n this.server = server\n server.keepAliveTimeout = 90000\n this.terminator = createHttpTerminator({ server })\n await events.once(server, 'listening')\n const { port } = server.address() as AddressInfo\n this.ctx.cfg.assignPort(port)\n return server\n }\n\n async destroy(): Promise<void> {\n try {\n await this.ctx.featureGatesClient.destroy()\n } finally {\n try {\n await this.terminator?.terminate()\n } finally {\n try {\n await this.ctx.etcd?.close()\n } finally {\n await Promise.all(this.dispatchers.map((d) => d.close()))\n }\n }\n }\n }\n\n async [Symbol.asyncDispose]() {\n await this.destroy()\n }\n}\n\nexport default BskyAppView\n"]}
|
|
@@ -23,6 +23,7 @@ export declare const $input: l.Payload<"application/json", l.ObjectSchema<{
|
|
|
23
23
|
description: l.OptionalSchema<l.StringSchema<{}>>;
|
|
24
24
|
recommendedPolicies: l.OptionalSchema<l.ArraySchema<l.StringSchema<{}>>>;
|
|
25
25
|
recommendedLabels: l.OptionalSchema<l.ArraySchema<l.StringSchema<{}>>>;
|
|
26
|
+
strictAccess: l.OptionalSchema<l.BooleanSchema>;
|
|
26
27
|
}>>;
|
|
27
28
|
export type $Input<B = l.BinaryData> = l.InferPayload<typeof $input, B>;
|
|
28
29
|
export type $InputBody<B = l.BinaryData> = l.InferPayloadBody<typeof $input, B>;
|
|
@@ -50,6 +51,7 @@ declare const main: l.Procedure<"tools.ozone.queue.createQueue", l.ParamsSchema<
|
|
|
50
51
|
description: l.OptionalSchema<l.StringSchema<{}>>;
|
|
51
52
|
recommendedPolicies: l.OptionalSchema<l.ArraySchema<l.StringSchema<{}>>>;
|
|
52
53
|
recommendedLabels: l.OptionalSchema<l.ArraySchema<l.StringSchema<{}>>>;
|
|
54
|
+
strictAccess: l.OptionalSchema<l.BooleanSchema>;
|
|
53
55
|
}>>, l.Payload<"application/json", l.ObjectSchema<{
|
|
54
56
|
queue: l.RefSchema<l.Validator<QueueDefs.QueueView, QueueDefs.QueueView>>;
|
|
55
57
|
}>>, readonly ["InvalidRecommendedPolicies", "ConflictingQueue"]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createQueue.defs.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/createQueue.defs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,QAAA,MAAM,KAAK,kCAAkC,CAAC;AAE9C,KAAK,KAAK,GAAG,OAAO,KAAK,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,eAAO,MAAM,OAAO,oBAA2B,CAAC;AAEhD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC;AAEpD,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"createQueue.defs.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/createQueue.defs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,QAAA,MAAM,KAAK,kCAAkC,CAAC;AAE9C,KAAK,KAAK,GAAG,OAAO,KAAK,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,eAAO,MAAM,OAAO,oBAA2B,CAAC;AAEhD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC;AAEpD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;GAA+7B,CAAC;AAEn9B,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC;AACxE,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC;AAEhF,eAAO,MAAM,OAAO;;GAAsH,CAAC;AAE3I,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;AAC1E,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;AAElF,yPAAyP;AACzP,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;iEAAgH,CAAC;AAE3H,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,QAAA,MAAM,IAAI,kCAAQ,CAAC;AAEnB,KAAK,IAAI,GAAG,OAAO,IAAI,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
|
@@ -6,7 +6,7 @@ import * as QueueDefs from "./defs.defs.js";
|
|
|
6
6
|
const $nsid = "tools.ozone.queue.createQueue";
|
|
7
7
|
export { $nsid };
|
|
8
8
|
export const $params = /*#__PURE__*/ l.params();
|
|
9
|
-
export const $input = /*#__PURE__*/ l.jsonPayload({ "name": /*#__PURE__*/ l.string(), "subjectTypes": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "collection": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ "format": "nsid" })), "reportTypes": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "reporterTags": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ "minLength": 1 }), { "maxLength": 25 })), "accountTags": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ "minLength": 1 }), { "maxLength": 25 })), "description": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "recommendedPolicies": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "recommendedLabels": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())) });
|
|
9
|
+
export const $input = /*#__PURE__*/ l.jsonPayload({ "name": /*#__PURE__*/ l.string(), "subjectTypes": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "collection": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ "format": "nsid" })), "reportTypes": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "reporterTags": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ "minLength": 1 }), { "maxLength": 25 })), "accountTags": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ "minLength": 1 }), { "maxLength": 25 })), "description": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "recommendedPolicies": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "recommendedLabels": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "strictAccess": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()) });
|
|
10
10
|
export const $output = /*#__PURE__*/ l.jsonPayload({ "queue": /*#__PURE__*/ l.ref((() => QueueDefs.queueView)) });
|
|
11
11
|
/** Create a new moderation queue. A queue with omitted or empty subjectTypes or reportTypes must have reports assigned to it manually via (1) `modTool.meta.queueId` in `tools.ozone.moderation.emitEvent` or (2) `tools.ozone.report.reassignQueue`. */
|
|
12
12
|
const main = /*#__PURE__*/ l.procedure($nsid, $params, $input, $output, ["InvalidRecommendedPolicies", "ConflictingQueue"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createQueue.defs.js","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/createQueue.defs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,MAAM,KAAK,GAAG,+BAA+B,CAAC;AAI9C,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAIhD,MAAM,CAAC,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,EAAC,MAAM,EAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,EAAC,cAAc,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAiE,CAAG,CAAC,EAAC,YAAY,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,QAAQ,EAAC,MAAM,EAAC,CAAC,CAAC,EAAC,aAAa,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,cAAc,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,CAAC,EAAE,EAAC,WAAW,EAAC,EAAE,EAAC,CAAC,CAAC,EAAC,aAAa,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,CAAC,EAAE,EAAC,WAAW,EAAC,EAAE,EAAC,CAAC,CAAC,EAAC,aAAa,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,qBAAqB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,mBAAmB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"createQueue.defs.js","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/createQueue.defs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,MAAM,KAAK,GAAG,+BAA+B,CAAC;AAI9C,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAIhD,MAAM,CAAC,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,EAAC,MAAM,EAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,EAAC,cAAc,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAiE,CAAG,CAAC,EAAC,YAAY,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,QAAQ,EAAC,MAAM,EAAC,CAAC,CAAC,EAAC,aAAa,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,cAAc,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,CAAC,EAAE,EAAC,WAAW,EAAC,EAAE,EAAC,CAAC,CAAC,EAAC,aAAa,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,CAAC,EAAE,EAAC,WAAW,EAAC,EAAE,EAAC,CAAC,CAAC,EAAC,aAAa,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,qBAAqB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,mBAAmB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,cAAc,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC;AAKn9B,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,EAAC,OAAO,EAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAsB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAQ,CAAC,EAAC,CAAC,CAAC;AAK3I,yPAAyP;AACzP,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,4BAA4B,EAAC,kBAAkB,CAAC,CAAC,CAAC;AAE3H,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,MAAM,IAAI,GAAG,KAAK,CAAC;AAInB,OAAO,EAAE,IAAI,EAAE,CAAC","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nimport { l } from \"@atproto/lex\";\nimport * as QueueDefs from \"./defs.defs.js\";\n\nconst $nsid = \"tools.ozone.queue.createQueue\";\n\ntype $nsid = typeof $nsid;\n\nexport { $nsid };\n\nexport const $params = /*#__PURE__*/ l.params();\n\nexport type $Params = l.InferOutput<typeof $params>;\n\nexport const $input = /*#__PURE__*/ l.jsonPayload({\"name\":/*#__PURE__*/ l.string(),\"subjectTypes\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string<{\"knownValues\":[\"account\",\"record\",\"message\",\"conversation\"]}>(), )),\"collection\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({\"format\":\"nsid\"})),\"reportTypes\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"reporterTags\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({\"minLength\":1}), {\"maxLength\":25})),\"accountTags\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({\"minLength\":1}), {\"maxLength\":25})),\"description\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\"recommendedPolicies\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"recommendedLabels\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"strictAccess\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean())});\n\nexport type $Input<B = l.BinaryData> = l.InferPayload<typeof $input, B>;\nexport type $InputBody<B = l.BinaryData> = l.InferPayloadBody<typeof $input, B>;\n\nexport const $output = /*#__PURE__*/ l.jsonPayload({\"queue\":/*#__PURE__*/ l.ref<QueueDefs.QueueView>((() => QueueDefs.queueView) as any)});\n\nexport type $Output<B = l.BinaryData> = l.InferPayload<typeof $output, B>;\nexport type $OutputBody<B = l.BinaryData> = l.InferPayloadBody<typeof $output, B>;\n\n/** Create a new moderation queue. A queue with omitted or empty subjectTypes or reportTypes must have reports assigned to it manually via (1) `modTool.meta.queueId` in `tools.ozone.moderation.emitEvent` or (2) `tools.ozone.report.reassignQueue`. */\nconst main = /*#__PURE__*/ l.procedure($nsid, $params, $input, $output, [\"InvalidRecommendedPolicies\",\"ConflictingQueue\"]);\n\nexport { main };\n\nconst $lxm = $nsid;\n\ntype $lxm = typeof $lxm;\n\nexport { $lxm };\n"]}
|
|
@@ -63,6 +63,10 @@ type QueueView = {
|
|
|
63
63
|
* Statistics about this queue
|
|
64
64
|
*/
|
|
65
65
|
"stats": QueueStats;
|
|
66
|
+
/**
|
|
67
|
+
* Admins can always list this queue and browse its reports. Other roles require an active queue assignment. Individual report and moderation event access is unchanged.
|
|
68
|
+
*/
|
|
69
|
+
"strictAccess"?: boolean;
|
|
66
70
|
};
|
|
67
71
|
export type { QueueView };
|
|
68
72
|
declare const queueView: l.TypedObjectSchema<"tools.ozone.queue.defs#queueView", l.Validator<QueueView, QueueView>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defs.defs.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/defs.defs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAC;AAEjD,QAAA,MAAM,KAAK,2BAA2B,CAAC;AAEvC,KAAK,KAAK,GAAG,OAAO,KAAK,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,KAAK,SAAS,GAAG;IAAE,KAAK,CAAC,EAAE,kCAAkC,CAAC;IAE5D;;OAEG;IACH,IAAI,EAAC,MAAM,CAAC;IAEZ;;OAEG;IACH,MAAM,EAAC,MAAM,CAAC;IAEd;;OAEG;IACH,cAAc,CAAC,EAAC,CAAC,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,cAAc,GAAG,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC;IAExF;;OAEG;IACH,YAAY,CAAC,EAAC,CAAC,CAAC,UAAU,CAAC;IAE3B;;OAEG;IACH,aAAa,CAAC,EAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IAE1B;;OAEG;IACH,cAAc,CAAC,EAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IAE3B;;OAEG;IACH,aAAa,CAAC,EAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IAE1B;;OAEG;IACH,aAAa,CAAC,EAAC,MAAM,CAAC;IAEtB;;OAEG;IACH,qBAAqB,CAAC,EAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IAElC;;OAEG;IACH,mBAAmB,CAAC,EAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IAEhC;;OAEG;IACH,WAAW,EAAC,CAAC,CAAC,SAAS,CAAC;IAAA,WAAW,EAAC,CAAC,CAAC,cAAc,CAAC;IAAA,WAAW,EAAC,CAAC,CAAC,cAAc,CAAC;IAElF;;OAEG;IACH,SAAS,EAAC,OAAO,CAAC;IAElB;;OAEG;IACH,WAAW,CAAC,EAAC,CAAC,CAAC,cAAc,CAAC;IAE9B;;OAEG;IACH,OAAO,EAAC,UAAU,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"defs.defs.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/defs.defs.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { l } from "@atproto/lex";
|
|
|
5
5
|
import * as TeamDefs from "../team/defs.defs.js";
|
|
6
6
|
const $nsid = "tools.ozone.queue.defs";
|
|
7
7
|
export { $nsid };
|
|
8
|
-
const queueView = /*#__PURE__*/ l.typedObject($nsid, "queueView", /*#__PURE__*/ l.object({ "id": /*#__PURE__*/ l.integer(), "name": /*#__PURE__*/ l.string(), "subjectTypes": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "collection": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ "format": "nsid" })), "reportTypes": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "reporterTags": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ "minLength": 1 }), { "maxLength": 25 })), "accountTags": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ "minLength": 1 }), { "maxLength": 25 })), "description": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "recommendedPolicies": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "recommendedLabels": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "createdBy": /*#__PURE__*/ l.string({ "format": "did" }), "createdAt": /*#__PURE__*/ l.string({ "format": "datetime" }), "updatedAt": /*#__PURE__*/ l.string({ "format": "datetime" }), "enabled": /*#__PURE__*/ l.boolean(), "deletedAt": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ "format": "datetime" })), "stats": /*#__PURE__*/ l.ref((() => queueStats)) }));
|
|
8
|
+
const queueView = /*#__PURE__*/ l.typedObject($nsid, "queueView", /*#__PURE__*/ l.object({ "id": /*#__PURE__*/ l.integer(), "name": /*#__PURE__*/ l.string(), "subjectTypes": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "collection": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ "format": "nsid" })), "reportTypes": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "reporterTags": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ "minLength": 1 }), { "maxLength": 25 })), "accountTags": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ "minLength": 1 }), { "maxLength": 25 })), "description": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "recommendedPolicies": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "recommendedLabels": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "createdBy": /*#__PURE__*/ l.string({ "format": "did" }), "createdAt": /*#__PURE__*/ l.string({ "format": "datetime" }), "updatedAt": /*#__PURE__*/ l.string({ "format": "datetime" }), "enabled": /*#__PURE__*/ l.boolean(), "deletedAt": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ "format": "datetime" })), "stats": /*#__PURE__*/ l.ref((() => queueStats)), "strictAccess": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()) }));
|
|
9
9
|
export { queueView };
|
|
10
10
|
const queueStats = /*#__PURE__*/ l.typedObject($nsid, "queueStats", /*#__PURE__*/ l.object({ "pendingCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "closureTargetOverdueCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({ "minimum": 0 })), "closureTargetMetCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({ "minimum": 0 })), "closureTargetMissedCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({ "minimum": 0 })), "closureTargetMetRate": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({ "minimum": 0, "maximum": 100 })), "closedCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "actionedCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "acknowledgedCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "escalatedCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "inboundCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "labelActionCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "tagActionCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "takedownActionCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "ahtDurationSec": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "ahtSampleCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "resolutionDurationSec": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "resolutionSampleCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "actionRate": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "avgHandlingTimeSec": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "avgResolutionTimeSec": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "lastUpdated": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ "format": "datetime" })) }));
|
|
11
11
|
export { queueStats };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defs.defs.js","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/defs.defs.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nimport { l } from \"@atproto/lex\";\nimport * as TeamDefs from \"../team/defs.defs.js\";\n\nconst $nsid = \"tools.ozone.queue.defs\";\n\ntype $nsid = typeof $nsid;\n\nexport { $nsid };\n\ntype QueueView = { $type?: \"tools.ozone.queue.defs#queueView\";\n\n /**\n * Queue ID\n */\n \"id\":number;\n\n /**\n * Display name of the queue\n */\n \"name\":string;\n\n /**\n * Subject types this queue accepts.\n */\n \"subjectTypes\"?:(\"account\" | \"record\" | \"message\" | \"conversation\" | l.UnknownString)[];\n\n /**\n * Collection name for record subjects. Omit to accept every collection.\n */\n \"collection\"?:l.NsidString;\n\n /**\n * Report reason types this queue accepts (fully qualified NSIDs)\n */\n \"reportTypes\"?:(string)[];\n\n /**\n * Match any listed tag on the account submitting the report.\n */\n \"reporterTags\"?:(string)[];\n\n /**\n * Match tags on the account that is being reported against. For record subjects, use the author account. Match any listed tag.\n */\n \"accountTags\"?:(string)[];\n\n /**\n * Optional description of the queue\n */\n \"description\"?:string;\n\n /**\n * Policy keys recommended when actioning reports in this queue\n */\n \"recommendedPolicies\"?:(string)[];\n\n /**\n * Labels recommended for this queue and used as a fallback when routing label appeals\n */\n \"recommendedLabels\"?:(string)[];\n\n /**\n * DID of moderator who created this queue\n */\n \"createdBy\":l.DidString;\"createdAt\":l.DatetimeString;\"updatedAt\":l.DatetimeString;\n\n /**\n * Whether this queue is currently active\n */\n \"enabled\":boolean;\n\n /**\n * When the queue was deleted, if applicable\n */\n \"deletedAt\"?:l.DatetimeString;\n\n /**\n * Statistics about this queue\n */\n \"stats\":QueueStats };\n\nexport type { QueueView };\n\nconst queueView = /*#__PURE__*/ l.typedObject<QueueView>($nsid, \"queueView\", /*#__PURE__*/ l.object({\"id\":/*#__PURE__*/ l.integer(),\"name\":/*#__PURE__*/ l.string(),\"subjectTypes\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string<{\"knownValues\":[\"account\",\"record\",\"message\",\"conversation\"]}>(), )),\"collection\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({\"format\":\"nsid\"})),\"reportTypes\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"reporterTags\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({\"minLength\":1}), {\"maxLength\":25})),\"accountTags\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({\"minLength\":1}), {\"maxLength\":25})),\"description\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\"recommendedPolicies\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"recommendedLabels\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"createdBy\":/*#__PURE__*/ l.string({\"format\":\"did\"}),\"createdAt\":/*#__PURE__*/ l.string({\"format\":\"datetime\"}),\"updatedAt\":/*#__PURE__*/ l.string({\"format\":\"datetime\"}),\"enabled\":/*#__PURE__*/ l.boolean(),\"deletedAt\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({\"format\":\"datetime\"})),\"stats\":/*#__PURE__*/ l.ref<QueueStats>((() => queueStats) as any)}));\n\nexport { queueView };\n\ntype QueueStats = { $type?: \"tools.ozone.queue.defs#queueStats\";\n\n /**\n * Number of unmuted reports currently not closed.\n */\n \"pendingCount\"?:number;\n\n /**\n * Unmuted pending reports past their closure target.\n */\n \"closureTargetOverdueCount\"?:number;\n\n /**\n * Reports whose closure meets their closure target.\n */\n \"closureTargetMetCount\"?:number;\n\n /**\n * Reports whose closure exceeds their closure target.\n */\n \"closureTargetMissedCount\"?:number;\n\n /**\n * Percent of reports meeting their closure target.\n */\n \"closureTargetMetRate\"?:number;\n\n /**\n * Number of reports whose current closure falls within this UTC calendar day.\n */\n \"closedCount\"?:number;\n\n /**\n * Number of closures whose last report action is label, tag, or takedown.\n */\n \"actionedCount\"?:number;\n\n /**\n * Number of closures whose last report action is not label, tag, or takedown.\n */\n \"acknowledgedCount\"?:number;\n\n /**\n * Number of report escalation events during this UTC calendar day.\n */\n \"escalatedCount\"?:number;\n\n /**\n * Reports received in this queue during this UTC calendar day.\n */\n \"inboundCount\"?:number;\n\n /**\n * Closures whose last report action is a label event.\n */\n \"labelActionCount\"?:number;\n\n /**\n * Closures whose last report action is a tag event.\n */\n \"tagActionCount\"?:number;\n\n /**\n * Closures whose last report action is a takedown event.\n */\n \"takedownActionCount\"?:number;\n\n /**\n * Sum of report assignment-to-close seconds.\n */\n \"ahtDurationSec\"?:number;\n\n /**\n * Number of assigned closed-report samples in ahtDurationSec.\n */\n \"ahtSampleCount\"?:number;\n\n /**\n * Sum of report creation-to-close seconds.\n */\n \"resolutionDurationSec\"?:number;\n\n /**\n * Number of closed-report samples in resolutionDurationSec.\n */\n \"resolutionSampleCount\"?:number;\n\n /**\n * Percentage of closures actioned (actionedCount / closedCount * 100), rounded to nearest integer.\n */\n \"actionRate\"?:number;\n\n /**\n * Average handling time in seconds from report assignment to close.\n */\n \"avgHandlingTimeSec\"?:number;\n\n /**\n * Average resolution time in seconds from report creation to close.\n */\n \"avgResolutionTimeSec\"?:number;\n\n /**\n * When these statistics were last computed.\n */\n \"lastUpdated\"?:l.DatetimeString };\n\nexport type { QueueStats };\n\nconst queueStats = /*#__PURE__*/ l.typedObject<QueueStats>($nsid, \"queueStats\", /*#__PURE__*/ l.object({\"pendingCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"closureTargetOverdueCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({\"minimum\":0})),\"closureTargetMetCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({\"minimum\":0})),\"closureTargetMissedCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({\"minimum\":0})),\"closureTargetMetRate\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({\"minimum\":0,\"maximum\":100})),\"closedCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"actionedCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"acknowledgedCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"escalatedCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"inboundCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"labelActionCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"tagActionCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"takedownActionCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"ahtDurationSec\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"ahtSampleCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"resolutionDurationSec\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"resolutionSampleCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"actionRate\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"avgHandlingTimeSec\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"avgResolutionTimeSec\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"lastUpdated\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({\"format\":\"datetime\"}))}));\n\nexport { queueStats };\n\ntype AssignmentView = { $type?: \"tools.ozone.queue.defs#assignmentView\";\"id\":number;\"did\":l.DidString;\n\n /**\n * The moderator assigned to this queue\n */\n \"moderator\"?:TeamDefs.Member;\"queue\":QueueView;\"startAt\":l.DatetimeString;\"endAt\"?:l.DatetimeString };\n\nexport type { AssignmentView };\n\nconst assignmentView = /*#__PURE__*/ l.typedObject<AssignmentView>($nsid, \"assignmentView\", /*#__PURE__*/ l.object({\"id\":/*#__PURE__*/ l.integer(),\"did\":/*#__PURE__*/ l.string({\"format\":\"did\"}),\"moderator\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.ref<TeamDefs.Member>((() => TeamDefs.member) as any)),\"queue\":/*#__PURE__*/ l.ref<QueueView>((() => queueView) as any),\"startAt\":/*#__PURE__*/ l.string({\"format\":\"datetime\"}),\"endAt\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({\"format\":\"datetime\"}))}));\n\nexport { assignmentView };\n"]}
|
|
1
|
+
{"version":3,"file":"defs.defs.js","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/defs.defs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAC;AAEjD,MAAM,KAAK,GAAG,wBAAwB,CAAC;AAIvC,OAAO,EAAE,KAAK,EAAE,CAAC;AAiFjB,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAY,KAAK,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,IAAI,EAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,EAAC,MAAM,EAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,EAAC,cAAc,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAiE,CAAG,CAAC,EAAC,YAAY,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,QAAQ,EAAC,MAAM,EAAC,CAAC,CAAC,EAAC,aAAa,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,cAAc,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,CAAC,EAAE,EAAC,WAAW,EAAC,EAAE,EAAC,CAAC,CAAC,EAAC,aAAa,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,CAAC,EAAE,EAAC,WAAW,EAAC,EAAE,EAAC,CAAC,CAAC,EAAC,aAAa,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,qBAAqB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,mBAAmB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,WAAW,EAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,QAAQ,EAAC,KAAK,EAAC,CAAC,EAAC,WAAW,EAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,EAAC,WAAW,EAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,EAAC,SAAS,EAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,EAAC,WAAW,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,CAAC,EAAC,OAAO,EAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAa,CAAC,GAAG,EAAE,CAAC,UAAU,CAAQ,CAAC,EAAC,cAAc,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;AAEz4C,OAAO,EAAE,SAAS,EAAE,CAAC;AA+GrB,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAa,KAAK,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,cAAc,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,2BAA2B,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,uBAAuB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,0BAA0B,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,sBAAsB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,aAAa,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,eAAe,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,mBAAmB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,gBAAgB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,cAAc,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,kBAAkB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,gBAAgB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,qBAAqB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,gBAAgB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,gBAAgB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,uBAAuB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,uBAAuB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,YAAY,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,oBAAoB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,sBAAsB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,aAAa,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;AAE/pD,OAAO,EAAE,UAAU,EAAE,CAAC;AAWtB,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAiB,KAAK,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,IAAI,EAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,EAAC,KAAK,EAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,QAAQ,EAAC,KAAK,EAAC,CAAC,EAAC,WAAW,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAkB,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAQ,CAAC,CAAC,EAAC,OAAO,EAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAY,CAAC,GAAG,EAAE,CAAC,SAAS,CAAQ,CAAC,EAAC,SAAS,EAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,EAAC,OAAO,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;AAEzf,OAAO,EAAE,cAAc,EAAE,CAAC","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nimport { l } from \"@atproto/lex\";\nimport * as TeamDefs from \"../team/defs.defs.js\";\n\nconst $nsid = \"tools.ozone.queue.defs\";\n\ntype $nsid = typeof $nsid;\n\nexport { $nsid };\n\ntype QueueView = { $type?: \"tools.ozone.queue.defs#queueView\";\n\n /**\n * Queue ID\n */\n \"id\":number;\n\n /**\n * Display name of the queue\n */\n \"name\":string;\n\n /**\n * Subject types this queue accepts.\n */\n \"subjectTypes\"?:(\"account\" | \"record\" | \"message\" | \"conversation\" | l.UnknownString)[];\n\n /**\n * Collection name for record subjects. Omit to accept every collection.\n */\n \"collection\"?:l.NsidString;\n\n /**\n * Report reason types this queue accepts (fully qualified NSIDs)\n */\n \"reportTypes\"?:(string)[];\n\n /**\n * Match any listed tag on the account submitting the report.\n */\n \"reporterTags\"?:(string)[];\n\n /**\n * Match tags on the account that is being reported against. For record subjects, use the author account. Match any listed tag.\n */\n \"accountTags\"?:(string)[];\n\n /**\n * Optional description of the queue\n */\n \"description\"?:string;\n\n /**\n * Policy keys recommended when actioning reports in this queue\n */\n \"recommendedPolicies\"?:(string)[];\n\n /**\n * Labels recommended for this queue and used as a fallback when routing label appeals\n */\n \"recommendedLabels\"?:(string)[];\n\n /**\n * DID of moderator who created this queue\n */\n \"createdBy\":l.DidString;\"createdAt\":l.DatetimeString;\"updatedAt\":l.DatetimeString;\n\n /**\n * Whether this queue is currently active\n */\n \"enabled\":boolean;\n\n /**\n * When the queue was deleted, if applicable\n */\n \"deletedAt\"?:l.DatetimeString;\n\n /**\n * Statistics about this queue\n */\n \"stats\":QueueStats;\n\n /**\n * Admins can always list this queue and browse its reports. Other roles require an active queue assignment. Individual report and moderation event access is unchanged.\n */\n \"strictAccess\"?:boolean };\n\nexport type { QueueView };\n\nconst queueView = /*#__PURE__*/ l.typedObject<QueueView>($nsid, \"queueView\", /*#__PURE__*/ l.object({\"id\":/*#__PURE__*/ l.integer(),\"name\":/*#__PURE__*/ l.string(),\"subjectTypes\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string<{\"knownValues\":[\"account\",\"record\",\"message\",\"conversation\"]}>(), )),\"collection\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({\"format\":\"nsid\"})),\"reportTypes\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"reporterTags\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({\"minLength\":1}), {\"maxLength\":25})),\"accountTags\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({\"minLength\":1}), {\"maxLength\":25})),\"description\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\"recommendedPolicies\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"recommendedLabels\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"createdBy\":/*#__PURE__*/ l.string({\"format\":\"did\"}),\"createdAt\":/*#__PURE__*/ l.string({\"format\":\"datetime\"}),\"updatedAt\":/*#__PURE__*/ l.string({\"format\":\"datetime\"}),\"enabled\":/*#__PURE__*/ l.boolean(),\"deletedAt\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({\"format\":\"datetime\"})),\"stats\":/*#__PURE__*/ l.ref<QueueStats>((() => queueStats) as any),\"strictAccess\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean())}));\n\nexport { queueView };\n\ntype QueueStats = { $type?: \"tools.ozone.queue.defs#queueStats\";\n\n /**\n * Number of unmuted reports currently not closed.\n */\n \"pendingCount\"?:number;\n\n /**\n * Unmuted pending reports past their closure target.\n */\n \"closureTargetOverdueCount\"?:number;\n\n /**\n * Reports whose closure meets their closure target.\n */\n \"closureTargetMetCount\"?:number;\n\n /**\n * Reports whose closure exceeds their closure target.\n */\n \"closureTargetMissedCount\"?:number;\n\n /**\n * Percent of reports meeting their closure target.\n */\n \"closureTargetMetRate\"?:number;\n\n /**\n * Number of reports whose current closure falls within this UTC calendar day.\n */\n \"closedCount\"?:number;\n\n /**\n * Number of closures whose last report action is label, tag, or takedown.\n */\n \"actionedCount\"?:number;\n\n /**\n * Number of closures whose last report action is not label, tag, or takedown.\n */\n \"acknowledgedCount\"?:number;\n\n /**\n * Number of report escalation events during this UTC calendar day.\n */\n \"escalatedCount\"?:number;\n\n /**\n * Reports received in this queue during this UTC calendar day.\n */\n \"inboundCount\"?:number;\n\n /**\n * Closures whose last report action is a label event.\n */\n \"labelActionCount\"?:number;\n\n /**\n * Closures whose last report action is a tag event.\n */\n \"tagActionCount\"?:number;\n\n /**\n * Closures whose last report action is a takedown event.\n */\n \"takedownActionCount\"?:number;\n\n /**\n * Sum of report assignment-to-close seconds.\n */\n \"ahtDurationSec\"?:number;\n\n /**\n * Number of assigned closed-report samples in ahtDurationSec.\n */\n \"ahtSampleCount\"?:number;\n\n /**\n * Sum of report creation-to-close seconds.\n */\n \"resolutionDurationSec\"?:number;\n\n /**\n * Number of closed-report samples in resolutionDurationSec.\n */\n \"resolutionSampleCount\"?:number;\n\n /**\n * Percentage of closures actioned (actionedCount / closedCount * 100), rounded to nearest integer.\n */\n \"actionRate\"?:number;\n\n /**\n * Average handling time in seconds from report assignment to close.\n */\n \"avgHandlingTimeSec\"?:number;\n\n /**\n * Average resolution time in seconds from report creation to close.\n */\n \"avgResolutionTimeSec\"?:number;\n\n /**\n * When these statistics were last computed.\n */\n \"lastUpdated\"?:l.DatetimeString };\n\nexport type { QueueStats };\n\nconst queueStats = /*#__PURE__*/ l.typedObject<QueueStats>($nsid, \"queueStats\", /*#__PURE__*/ l.object({\"pendingCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"closureTargetOverdueCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({\"minimum\":0})),\"closureTargetMetCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({\"minimum\":0})),\"closureTargetMissedCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({\"minimum\":0})),\"closureTargetMetRate\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({\"minimum\":0,\"maximum\":100})),\"closedCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"actionedCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"acknowledgedCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"escalatedCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"inboundCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"labelActionCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"tagActionCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"takedownActionCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"ahtDurationSec\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"ahtSampleCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"resolutionDurationSec\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"resolutionSampleCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"actionRate\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"avgHandlingTimeSec\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"avgResolutionTimeSec\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"lastUpdated\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({\"format\":\"datetime\"}))}));\n\nexport { queueStats };\n\ntype AssignmentView = { $type?: \"tools.ozone.queue.defs#assignmentView\";\"id\":number;\"did\":l.DidString;\n\n /**\n * The moderator assigned to this queue\n */\n \"moderator\"?:TeamDefs.Member;\"queue\":QueueView;\"startAt\":l.DatetimeString;\"endAt\"?:l.DatetimeString };\n\nexport type { AssignmentView };\n\nconst assignmentView = /*#__PURE__*/ l.typedObject<AssignmentView>($nsid, \"assignmentView\", /*#__PURE__*/ l.object({\"id\":/*#__PURE__*/ l.integer(),\"did\":/*#__PURE__*/ l.string({\"format\":\"did\"}),\"moderator\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.ref<TeamDefs.Member>((() => TeamDefs.member) as any)),\"queue\":/*#__PURE__*/ l.ref<QueueView>((() => queueView) as any),\"startAt\":/*#__PURE__*/ l.string({\"format\":\"datetime\"}),\"endAt\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({\"format\":\"datetime\"}))}));\n\nexport { assignmentView };\n"]}
|
|
@@ -12,6 +12,7 @@ export declare const $input: l.Payload<"application/json", l.ObjectSchema<{
|
|
|
12
12
|
description: l.OptionalSchema<l.StringSchema<{}>>;
|
|
13
13
|
recommendedPolicies: l.OptionalSchema<l.ArraySchema<l.StringSchema<{}>>>;
|
|
14
14
|
recommendedLabels: l.OptionalSchema<l.ArraySchema<l.StringSchema<{}>>>;
|
|
15
|
+
strictAccess: l.OptionalSchema<l.BooleanSchema>;
|
|
15
16
|
}>>;
|
|
16
17
|
export type $Input<B = l.BinaryData> = l.InferPayload<typeof $input, B>;
|
|
17
18
|
export type $InputBody<B = l.BinaryData> = l.InferPayloadBody<typeof $input, B>;
|
|
@@ -28,6 +29,7 @@ declare const main: l.Procedure<"tools.ozone.queue.updateQueue", l.ParamsSchema<
|
|
|
28
29
|
description: l.OptionalSchema<l.StringSchema<{}>>;
|
|
29
30
|
recommendedPolicies: l.OptionalSchema<l.ArraySchema<l.StringSchema<{}>>>;
|
|
30
31
|
recommendedLabels: l.OptionalSchema<l.ArraySchema<l.StringSchema<{}>>>;
|
|
32
|
+
strictAccess: l.OptionalSchema<l.BooleanSchema>;
|
|
31
33
|
}>>, l.Payload<"application/json", l.ObjectSchema<{
|
|
32
34
|
queue: l.RefSchema<l.Validator<QueueDefs.QueueView, QueueDefs.QueueView>>;
|
|
33
35
|
}>>, readonly ["InvalidRecommendedPolicies", "ConflictingQueue"]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateQueue.defs.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/updateQueue.defs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,QAAA,MAAM,KAAK,kCAAkC,CAAC;AAE9C,KAAK,KAAK,GAAG,OAAO,KAAK,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,eAAO,MAAM,OAAO,oBAA2B,CAAC;AAEhD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC;AAEpD,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"updateQueue.defs.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/updateQueue.defs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,QAAA,MAAM,KAAK,kCAAkC,CAAC;AAE9C,KAAK,KAAK,GAAG,OAAO,KAAK,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,eAAO,MAAM,OAAO,oBAA2B,CAAC;AAEhD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC;AAEpD,eAAO,MAAM,MAAM;;;;;;;;GAAmgB,CAAC;AAEvhB,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC;AACxE,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC;AAEhF,eAAO,MAAM,OAAO;;GAAsH,CAAC;AAE3I,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;AAC1E,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;AAElF,+BAA+B;AAC/B,QAAA,MAAM,IAAI;;;;;;;;;;iEAAgH,CAAC;AAE3H,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,QAAA,MAAM,IAAI,kCAAQ,CAAC;AAEnB,KAAK,IAAI,GAAG,OAAO,IAAI,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
|
@@ -6,7 +6,7 @@ import * as QueueDefs from "./defs.defs.js";
|
|
|
6
6
|
const $nsid = "tools.ozone.queue.updateQueue";
|
|
7
7
|
export { $nsid };
|
|
8
8
|
export const $params = /*#__PURE__*/ l.params();
|
|
9
|
-
export const $input = /*#__PURE__*/ l.jsonPayload({ "queueId": /*#__PURE__*/ l.integer(), "name": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "enabled": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()), "description": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "recommendedPolicies": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "recommendedLabels": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())) });
|
|
9
|
+
export const $input = /*#__PURE__*/ l.jsonPayload({ "queueId": /*#__PURE__*/ l.integer(), "name": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "enabled": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()), "description": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "recommendedPolicies": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "recommendedLabels": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "strictAccess": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()) });
|
|
10
10
|
export const $output = /*#__PURE__*/ l.jsonPayload({ "queue": /*#__PURE__*/ l.ref((() => QueueDefs.queueView)) });
|
|
11
11
|
/** Update queue properties. */
|
|
12
12
|
const main = /*#__PURE__*/ l.procedure($nsid, $params, $input, $output, ["InvalidRecommendedPolicies", "ConflictingQueue"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateQueue.defs.js","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/updateQueue.defs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,MAAM,KAAK,GAAG,+BAA+B,CAAC;AAI9C,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAIhD,MAAM,CAAC,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,EAAC,SAAS,EAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,EAAC,MAAM,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,SAAS,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,aAAa,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,qBAAqB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,mBAAmB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"updateQueue.defs.js","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/updateQueue.defs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,MAAM,KAAK,GAAG,+BAA+B,CAAC;AAI9C,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAIhD,MAAM,CAAC,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,EAAC,SAAS,EAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,EAAC,MAAM,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,SAAS,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,aAAa,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,qBAAqB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,mBAAmB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,cAAc,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC;AAKvhB,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,EAAC,OAAO,EAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAsB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAQ,CAAC,EAAC,CAAC,CAAC;AAK3I,+BAA+B;AAC/B,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,4BAA4B,EAAC,kBAAkB,CAAC,CAAC,CAAC;AAE3H,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,MAAM,IAAI,GAAG,KAAK,CAAC;AAInB,OAAO,EAAE,IAAI,EAAE,CAAC","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nimport { l } from \"@atproto/lex\";\nimport * as QueueDefs from \"./defs.defs.js\";\n\nconst $nsid = \"tools.ozone.queue.updateQueue\";\n\ntype $nsid = typeof $nsid;\n\nexport { $nsid };\n\nexport const $params = /*#__PURE__*/ l.params();\n\nexport type $Params = l.InferOutput<typeof $params>;\n\nexport const $input = /*#__PURE__*/ l.jsonPayload({\"queueId\":/*#__PURE__*/ l.integer(),\"name\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\"enabled\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()),\"description\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\"recommendedPolicies\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"recommendedLabels\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"strictAccess\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean())});\n\nexport type $Input<B = l.BinaryData> = l.InferPayload<typeof $input, B>;\nexport type $InputBody<B = l.BinaryData> = l.InferPayloadBody<typeof $input, B>;\n\nexport const $output = /*#__PURE__*/ l.jsonPayload({\"queue\":/*#__PURE__*/ l.ref<QueueDefs.QueueView>((() => QueueDefs.queueView) as any)});\n\nexport type $Output<B = l.BinaryData> = l.InferPayload<typeof $output, B>;\nexport type $OutputBody<B = l.BinaryData> = l.InferPayloadBody<typeof $output, B>;\n\n/** Update queue properties. */\nconst main = /*#__PURE__*/ l.procedure($nsid, $params, $input, $output, [\"InvalidRecommendedPolicies\",\"ConflictingQueue\"]);\n\nexport { main };\n\nconst $lxm = $nsid;\n\ntype $lxm = typeof $lxm;\n\nexport { $lxm };\n"]}
|
|
@@ -12,6 +12,9 @@ export declare const $input: l.Payload<"application/json", l.ObjectSchema<{
|
|
|
12
12
|
patternType: l.OptionalSchema<l.StringSchema<{}>>;
|
|
13
13
|
actions: l.OptionalSchema<l.ArraySchema<l.StringSchema<{}>>>;
|
|
14
14
|
reason: l.OptionalSchema<l.StringSchema<{}>>;
|
|
15
|
+
source: l.OptionalSchema<l.StringSchema<{
|
|
16
|
+
readonly maxLength: 128;
|
|
17
|
+
}>>;
|
|
15
18
|
createdBy: l.OptionalSchema<l.StringSchema<{
|
|
16
19
|
readonly format: "did";
|
|
17
20
|
}>>;
|
|
@@ -35,6 +38,9 @@ declare const main: l.Procedure<"tools.ozone.safelink.queryRules", l.ParamsSchem
|
|
|
35
38
|
patternType: l.OptionalSchema<l.StringSchema<{}>>;
|
|
36
39
|
actions: l.OptionalSchema<l.ArraySchema<l.StringSchema<{}>>>;
|
|
37
40
|
reason: l.OptionalSchema<l.StringSchema<{}>>;
|
|
41
|
+
source: l.OptionalSchema<l.StringSchema<{
|
|
42
|
+
readonly maxLength: 128;
|
|
43
|
+
}>>;
|
|
38
44
|
createdBy: l.OptionalSchema<l.StringSchema<{
|
|
39
45
|
readonly format: "did";
|
|
40
46
|
}>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryRules.defs.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/safelink/queryRules.defs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAE/C,QAAA,MAAM,KAAK,oCAAoC,CAAC;AAEhD,KAAK,KAAK,GAAG,OAAO,KAAK,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,eAAO,MAAM,OAAO,oBAA2B,CAAC;AAEhD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC;AAEpD,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"queryRules.defs.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/safelink/queryRules.defs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAE/C,QAAA,MAAM,KAAK,oCAAoC,CAAC;AAEhD,KAAK,KAAK,GAAG,OAAO,KAAK,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,eAAO,MAAM,OAAO,oBAA2B,CAAC;AAEhD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC;AAEpD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;GAA+xB,CAAC;AAEnzB,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC;AACxE,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC;AAEhF,eAAO,MAAM,OAAO;;;GAA6M,CAAC;AAElO,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;AAC1E,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;AAElF,6BAA6B;AAC7B,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;eAA6D,CAAC;AAExE,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,QAAA,MAAM,IAAI,oCAAQ,CAAC;AAEnB,KAAK,IAAI,GAAG,OAAO,IAAI,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
|
@@ -6,7 +6,7 @@ import * as SafelinkDefs from "./defs.defs.js";
|
|
|
6
6
|
const $nsid = "tools.ozone.safelink.queryRules";
|
|
7
7
|
export { $nsid };
|
|
8
8
|
export const $params = /*#__PURE__*/ l.params();
|
|
9
|
-
export const $input = /*#__PURE__*/ l.jsonPayload({ "cursor": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "limit": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.withDefault(/*#__PURE__*/ l.integer({ "minimum": 1, "maximum": 100 }), 50)), "urls": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "patternType": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "actions": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "reason": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "createdBy": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ "format": "did" })), "sortDirection": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.withDefault(/*#__PURE__*/ l.string(), "desc")) });
|
|
9
|
+
export const $input = /*#__PURE__*/ l.jsonPayload({ "cursor": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "limit": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.withDefault(/*#__PURE__*/ l.integer({ "minimum": 1, "maximum": 100 }), 50)), "urls": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "patternType": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "actions": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "reason": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "source": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ "maxLength": 128 })), "createdBy": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ "format": "did" })), "sortDirection": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.withDefault(/*#__PURE__*/ l.string(), "desc")) });
|
|
10
10
|
export const $output = /*#__PURE__*/ l.jsonPayload({ "cursor": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "rules": /*#__PURE__*/ l.array(/*#__PURE__*/ l.ref((() => SafelinkDefs.urlRule))) });
|
|
11
11
|
/** Query URL safety rules */
|
|
12
12
|
const main = /*#__PURE__*/ l.procedure($nsid, $params, $input, $output);
|