@atproto/pds 0.4.122 → 0.4.123

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.
Files changed (34) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/lexicon/index.d.ts +4 -0
  3. package/dist/lexicon/index.d.ts.map +1 -1
  4. package/dist/lexicon/index.js +8 -0
  5. package/dist/lexicon/index.js.map +1 -1
  6. package/dist/lexicon/lexicons.d.ts +254 -4
  7. package/dist/lexicon/lexicons.d.ts.map +1 -1
  8. package/dist/lexicon/lexicons.js +134 -2
  9. package/dist/lexicon/lexicons.js.map +1 -1
  10. package/dist/lexicon/types/com/atproto/sync/defs.d.ts +2 -0
  11. package/dist/lexicon/types/com/atproto/sync/defs.d.ts.map +1 -0
  12. package/dist/lexicon/types/com/atproto/sync/defs.js +7 -0
  13. package/dist/lexicon/types/com/atproto/sync/defs.js.map +1 -0
  14. package/dist/lexicon/types/com/atproto/sync/getHostStatus.d.ts +43 -0
  15. package/dist/lexicon/types/com/atproto/sync/getHostStatus.d.ts.map +1 -0
  16. package/dist/lexicon/types/com/atproto/sync/getHostStatus.js +7 -0
  17. package/dist/lexicon/types/com/atproto/sync/getHostStatus.js.map +1 -0
  18. package/dist/lexicon/types/com/atproto/sync/listHosts.d.ts +51 -0
  19. package/dist/lexicon/types/com/atproto/sync/listHosts.d.ts.map +1 -0
  20. package/dist/lexicon/types/com/atproto/sync/listHosts.js +16 -0
  21. package/dist/lexicon/types/com/atproto/sync/listHosts.js.map +1 -0
  22. package/dist/lexicon/types/com/atproto/sync/requestCrawl.d.ts +1 -0
  23. package/dist/lexicon/types/com/atproto/sync/requestCrawl.d.ts.map +1 -1
  24. package/dist/mailer/templates/plc-operation.js +1 -1
  25. package/dist/mailer/templates/plc-operation.js.map +1 -1
  26. package/package.json +6 -6
  27. package/src/lexicon/index.ts +24 -0
  28. package/src/lexicon/lexicons.ts +141 -2
  29. package/src/lexicon/types/com/atproto/sync/defs.ts +23 -0
  30. package/src/lexicon/types/com/atproto/sync/getHostStatus.ts +61 -0
  31. package/src/lexicon/types/com/atproto/sync/listHosts.ts +77 -0
  32. package/src/lexicon/types/com/atproto/sync/requestCrawl.ts +1 -0
  33. package/src/mailer/templates/plc-operation.hbs +2 -2
  34. package/tsconfig.build.tsbuildinfo +1 -1
@@ -0,0 +1,2 @@
1
+ export type HostStatus = 'active' | 'idle' | 'offline' | 'throttled' | 'banned' | (string & {});
2
+ //# sourceMappingURL=defs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defs.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/sync/defs.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,MAAM,GACN,SAAS,GACT,WAAW,GACX,QAAQ,GACR,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lexicons_1 = require("../../../../lexicons");
4
+ const util_1 = require("../../../../util");
5
+ const is$typed = util_1.is$typed, validate = lexicons_1.validate;
6
+ const id = 'com.atproto.sync.defs';
7
+ //# sourceMappingURL=defs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defs.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/sync/defs.ts"],"names":[],"mappings":";;AAKA,mDAA4D;AAC5D,2CAIyB;AAEzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,uBAAuB,CAAA"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * GENERATED CODE - DO NOT MODIFY
3
+ */
4
+ import express from 'express';
5
+ import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server';
6
+ import type * as ComAtprotoSyncDefs from './defs.js';
7
+ export interface QueryParams {
8
+ /** Hostname of the host (eg, PDS or relay) being queried. */
9
+ hostname: string;
10
+ }
11
+ export type InputSchema = undefined;
12
+ export interface OutputSchema {
13
+ hostname: string;
14
+ /** Recent repo stream event sequence number. May be delayed from actual stream processing (eg, persisted cursor not in-memory cursor). */
15
+ seq?: number;
16
+ /** Number of accounts on the server which are associated with the upstream host. Note that the upstream may actually have more accounts. */
17
+ accountCount?: number;
18
+ status?: ComAtprotoSyncDefs.HostStatus;
19
+ }
20
+ export type HandlerInput = undefined;
21
+ export interface HandlerSuccess {
22
+ encoding: 'application/json';
23
+ body: OutputSchema;
24
+ headers?: {
25
+ [key: string]: string;
26
+ };
27
+ }
28
+ export interface HandlerError {
29
+ status: number;
30
+ message?: string;
31
+ error?: 'HostNotFound';
32
+ }
33
+ export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough;
34
+ export type HandlerReqCtx<HA extends HandlerAuth = never> = {
35
+ auth: HA;
36
+ params: QueryParams;
37
+ input: HandlerInput;
38
+ req: express.Request;
39
+ res: express.Response;
40
+ resetRouteRateLimits: () => Promise<void>;
41
+ };
42
+ export type Handler<HA extends HandlerAuth = never> = (ctx: HandlerReqCtx<HA>) => Promise<HandlerOutput> | HandlerOutput;
43
+ //# sourceMappingURL=getHostStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getHostStatus.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/sync/getHostStatus.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAA;AAS7B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,KAAK,kBAAkB,MAAM,WAAW,CAAA;AAMpD,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,0IAA0I;IAC1I,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,4IAA4I;IAC5I,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAA;CACvC;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,CAAA;AAEpC,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,cAAc,CAAA;CACvB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,kBAAkB,CAAA;AAC9E,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI;IAC1D,IAAI,EAAE,EAAE,CAAA;IACR,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,YAAY,CAAA;IACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;IACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAA;IACrB,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1C,CAAA;AACD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI,CACpD,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lexicons_1 = require("../../../../lexicons");
4
+ const util_1 = require("../../../../util");
5
+ const is$typed = util_1.is$typed, validate = lexicons_1.validate;
6
+ const id = 'com.atproto.sync.getHostStatus';
7
+ //# sourceMappingURL=getHostStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getHostStatus.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/sync/getHostStatus.ts"],"names":[],"mappings":";;AAMA,mDAA4D;AAC5D,2CAIyB;AAIzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,gCAAgC,CAAA"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * GENERATED CODE - DO NOT MODIFY
3
+ */
4
+ import express from 'express';
5
+ import { type ValidationResult } from '@atproto/lexicon';
6
+ import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server';
7
+ import type * as ComAtprotoSyncDefs from './defs.js';
8
+ export interface QueryParams {
9
+ limit: number;
10
+ cursor?: string;
11
+ }
12
+ export type InputSchema = undefined;
13
+ export interface OutputSchema {
14
+ cursor?: string;
15
+ /** Sort order is not formally specified. Recommended order is by time host was first seen by the server, with oldest first. */
16
+ hosts: Host[];
17
+ }
18
+ export type HandlerInput = undefined;
19
+ export interface HandlerSuccess {
20
+ encoding: 'application/json';
21
+ body: OutputSchema;
22
+ headers?: {
23
+ [key: string]: string;
24
+ };
25
+ }
26
+ export interface HandlerError {
27
+ status: number;
28
+ message?: string;
29
+ }
30
+ export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough;
31
+ export type HandlerReqCtx<HA extends HandlerAuth = never> = {
32
+ auth: HA;
33
+ params: QueryParams;
34
+ input: HandlerInput;
35
+ req: express.Request;
36
+ res: express.Response;
37
+ resetRouteRateLimits: () => Promise<void>;
38
+ };
39
+ export type Handler<HA extends HandlerAuth = never> = (ctx: HandlerReqCtx<HA>) => Promise<HandlerOutput> | HandlerOutput;
40
+ export interface Host {
41
+ $type?: 'com.atproto.sync.listHosts#host';
42
+ /** hostname of server; not a URL (no scheme) */
43
+ hostname: string;
44
+ /** Recent repo stream event sequence number. May be delayed from actual stream processing (eg, persisted cursor not in-memory cursor). */
45
+ seq?: number;
46
+ accountCount?: number;
47
+ status?: ComAtprotoSyncDefs.HostStatus;
48
+ }
49
+ export declare function isHost<V>(v: V): v is import("../../../../util").$TypedObject<V, "com.atproto.sync.listHosts", "host">;
50
+ export declare function validateHost<V>(v: V): ValidationResult<Host & V>;
51
+ //# sourceMappingURL=listHosts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listHosts.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/sync/listHosts.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,KAAK,gBAAgB,EAAW,MAAM,kBAAkB,CAAA;AAQjE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,KAAK,kBAAkB,MAAM,WAAW,CAAA;AAMpD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+HAA+H;IAC/H,KAAK,EAAE,IAAI,EAAE,CAAA;CACd;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,CAAA;AAEpC,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,kBAAkB,CAAA;AAC9E,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI;IAC1D,IAAI,EAAE,EAAE,CAAA;IACR,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,YAAY,CAAA;IACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;IACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAA;IACrB,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1C,CAAA;AACD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI,CACpD,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA;AAE3C,MAAM,WAAW,IAAI;IACnB,KAAK,CAAC,EAAE,iCAAiC,CAAA;IACzC,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAA;IAChB,0IAA0I;IAC1I,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAA;CACvC;AAID,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,yFAE7B;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,8BAEnC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isHost = isHost;
4
+ exports.validateHost = validateHost;
5
+ const lexicons_1 = require("../../../../lexicons");
6
+ const util_1 = require("../../../../util");
7
+ const is$typed = util_1.is$typed, validate = lexicons_1.validate;
8
+ const id = 'com.atproto.sync.listHosts';
9
+ const hashHost = 'host';
10
+ function isHost(v) {
11
+ return is$typed(v, id, hashHost);
12
+ }
13
+ function validateHost(v) {
14
+ return validate(v, id, hashHost);
15
+ }
16
+ //# sourceMappingURL=listHosts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listHosts.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/sync/listHosts.ts"],"names":[],"mappings":";;AAsEA,wBAEC;AAED,oCAEC;AAtED,mDAA4D;AAC5D,2CAIyB;AAIzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,4BAA4B,CAAA;AAmDvC,MAAM,QAAQ,GAAG,MAAM,CAAA;AAEvB,SAAgB,MAAM,CAAI,CAAI;IAC5B,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;AAClC,CAAC;AAED,SAAgB,YAAY,CAAI,CAAI;IAClC,OAAO,QAAQ,CAAW,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;AAC5C,CAAC"}
@@ -16,6 +16,7 @@ export interface HandlerInput {
16
16
  export interface HandlerError {
17
17
  status: number;
18
18
  message?: string;
19
+ error?: 'HostBanned';
19
20
  }
20
21
  export type HandlerOutput = HandlerError | void;
21
22
  export type HandlerReqCtx<HA extends HandlerAuth = never> = {
@@ -1 +1 @@
1
- {"version":3,"file":"requestCrawl.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/sync/requestCrawl.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAA;AAS7B,OAAO,EAAE,WAAW,EAAsB,MAAM,sBAAsB,CAAA;AAMtE,MAAM,WAAW,WAAW;CAAG;AAE/B,MAAM,WAAW,WAAW;IAC1B,kFAAkF;IAClF,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,WAAW,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,IAAI,CAAA;AAC/C,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI;IAC1D,IAAI,EAAE,EAAE,CAAA;IACR,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,YAAY,CAAA;IACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;IACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAA;IACrB,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1C,CAAA;AACD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI,CACpD,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA"}
1
+ {"version":3,"file":"requestCrawl.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/sync/requestCrawl.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAA;AAS7B,OAAO,EAAE,WAAW,EAAsB,MAAM,sBAAsB,CAAA;AAMtE,MAAM,WAAW,WAAW;CAAG;AAE/B,MAAM,WAAW,WAAW;IAC1B,kFAAkF;IAClF,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,WAAW,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,YAAY,CAAA;CACrB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,IAAI,CAAA;AAC/C,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI;IAC1D,IAAI,EAAE,EAAE,CAAA;IACR,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,YAAY,CAAA;IACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;IACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAA;IACrB,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1C,CAAA;AACD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI,CACpD,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA"}
@@ -33,7 +33,7 @@ var plc_operation_default = Handlebars.template({ "compiler": [8, ">= 4.3.0"], "
33
33
  }
34
34
  return void 0;
35
35
  };
36
- return '<html dir="ltr" lang="en">\n\n <head>\n <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />\n <meta name="x-apple-disable-message-reformatting" />\n <title>PLC update requested</title>\n <meta\n name="description"\n content="We recieved a request to update your PLC."\n />\n </head>\n <div\n style="display:none;overflow:hidden;line-height:1px;opacity:0;max-height:0;max-width:0"\n >We recieved a request to update your PLC.<div\n >\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF</div>\n </div>\n\n <body\n style="padding:12px;padding-bottom:40px;background-color:hsl(211, 20%, 95.3%)"\n >\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="max-width:37.5em"\n >\n <tbody>\n <tr style="width:100%">\n <td>\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="padding-top:24px;padding-bottom:24px"\n >\n <tbody>\n <tr>\n <td><img\n alt="Bluesky"\n src="https://bsky.social/about/images/email/email_logo_default.png"\n style="display:block;outline:none;border:none;text-decoration:none;width:110px;margin:0 auto"\n /></td>\n </tr>\n </tbody>\n </table>\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="padding:24px;padding-bottom:16px;border-radius:12px;background-color:#FFFFFF"\n >\n <tbody>\n <tr>\n <td>\n <h1\n style="font-size:26px;letter-spacing:0.25px;color:#000000;font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;margin:0px 0px;line-height:1.0"\n >PLC update requested</h1>\n <p\n style="font-size:16px;line-height:1.4;margin:0px 0px;letter-spacing:0.25px;color:hsl(211, 24%, 34.2%);font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;padding-top:12px;padding-bottom:12px"\n >We received a request to update your PLC identity. Your\n confirmation code is:</p><code\n style="display:block;padding:16px;border-radius:8px;border-width:1px;border-style:solid;background-color:hsl(211, 20%, 95.3%);border-color:hsl(211, 20%, 85.89999999999999%);font-size:14px;letter-spacing:0.25px;font-family:monospace;text-transform:uppercase"\n >' + container.escapeExpression(container.lambda(depth0 != null ? lookupProperty(depth0, "token") : depth0, depth0)) + '</code>\n <p\n style="font-size:14px;line-height:1.4;margin:0px 0px;letter-spacing:0.25px;color:hsl(211, 20%, 53%);font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;padding-top:12px"\n >Updating your PLC identity is a very sensitive operation.\n Please only proceed if you are confident in what you are\n doing.</p>\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="padding-top:24px"\n >\n <tbody>\n <tr>\n <td>\n <hr\n style="width:100%;border:none;border-top:1px solid #eaeaea;margin:0"\n />\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="padding-top:16px;vertical-align:middle"\n >\n <tbody style="width:100%">\n <tr style="width:100%">\n <td data-id="__react-email-column">\n <p\n style="font-size:14px;line-height:1.4;margin:0px 0px;color:hsl(211, 20%, 53%);font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;letter-spacing:0.25px"\n ><a\n href="https://bsky.app"\n style="color:hsl(211, 20%, 53%);text-decoration:none;text-decoration-line:underline;font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;margin:0px 0px;line-height:1.0;font-size:14px;letter-spacing:0.25px"\n target="_blank"\n >Bluesky</a>, the social internet</p>\n </td>\n <td\n data-id="__react-email-column"\n style="width:24px"\n ><img\n alt="\u{1F98B}"\n src="https://bsky.social/about/images/email/email_mark_dark.png"\n style="display:block;outline:none;border:none;text-decoration:none;width:24px"\n /></td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="height:500px"\n >\n <tbody>\n <tr>\n <td></td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </body>\n\n</html>';
36
+ return '<html dir="ltr" lang="en">\n\n <head>\n <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />\n <meta name="x-apple-disable-message-reformatting" />\n <title>PLC update requested</title>\n <meta\n name="description"\n content="We received a request to update your PLC."\n />\n </head>\n <div\n style="display:none;overflow:hidden;line-height:1px;opacity:0;max-height:0;max-width:0"\n >We received a request to update your PLC.<div\n >\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF</div>\n </div>\n\n <body\n style="padding:12px;padding-bottom:40px;background-color:hsl(211, 20%, 95.3%)"\n >\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="max-width:37.5em"\n >\n <tbody>\n <tr style="width:100%">\n <td>\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="padding-top:24px;padding-bottom:24px"\n >\n <tbody>\n <tr>\n <td><img\n alt="Bluesky"\n src="https://bsky.social/about/images/email/email_logo_default.png"\n style="display:block;outline:none;border:none;text-decoration:none;width:110px;margin:0 auto"\n /></td>\n </tr>\n </tbody>\n </table>\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="padding:24px;padding-bottom:16px;border-radius:12px;background-color:#FFFFFF"\n >\n <tbody>\n <tr>\n <td>\n <h1\n style="font-size:26px;letter-spacing:0.25px;color:#000000;font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;margin:0px 0px;line-height:1.0"\n >PLC update requested</h1>\n <p\n style="font-size:16px;line-height:1.4;margin:0px 0px;letter-spacing:0.25px;color:hsl(211, 24%, 34.2%);font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;padding-top:12px;padding-bottom:12px"\n >We received a request to update your PLC identity. Your\n confirmation code is:</p><code\n style="display:block;padding:16px;border-radius:8px;border-width:1px;border-style:solid;background-color:hsl(211, 20%, 95.3%);border-color:hsl(211, 20%, 85.89999999999999%);font-size:14px;letter-spacing:0.25px;font-family:monospace;text-transform:uppercase"\n >' + container.escapeExpression(container.lambda(depth0 != null ? lookupProperty(depth0, "token") : depth0, depth0)) + '</code>\n <p\n style="font-size:14px;line-height:1.4;margin:0px 0px;letter-spacing:0.25px;color:hsl(211, 20%, 53%);font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;padding-top:12px"\n >Updating your PLC identity is a very sensitive operation.\n Please only proceed if you are confident in what you are\n doing.</p>\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="padding-top:24px"\n >\n <tbody>\n <tr>\n <td>\n <hr\n style="width:100%;border:none;border-top:1px solid #eaeaea;margin:0"\n />\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="padding-top:16px;vertical-align:middle"\n >\n <tbody style="width:100%">\n <tr style="width:100%">\n <td data-id="__react-email-column">\n <p\n style="font-size:14px;line-height:1.4;margin:0px 0px;color:hsl(211, 20%, 53%);font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;letter-spacing:0.25px"\n ><a\n href="https://bsky.app"\n style="color:hsl(211, 20%, 53%);text-decoration:none;text-decoration-line:underline;font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;margin:0px 0px;line-height:1.0;font-size:14px;letter-spacing:0.25px"\n target="_blank"\n >Bluesky</a>, the social internet</p>\n </td>\n <td\n data-id="__react-email-column"\n style="width:24px"\n ><img\n alt="\u{1F98B}"\n src="https://bsky.social/about/images/email/email_mark_dark.png"\n style="display:block;outline:none;border:none;text-decoration:none;width:24px"\n /></td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="height:500px"\n >\n <tbody>\n <tr>\n <td></td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </body>\n\n</html>';
37
37
  }, "useData": true });
38
38
  // Annotate the CommonJS export names for ESM import in node:
39
39
  0 && (module.exports = {});
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/mailer/templates/plc-operation.hbs"],
4
- "sourcesContent": ["import * as Handlebars from 'handlebars/runtime';\nHandlebars.registerHelper({});\nHandlebars.registerPartial({});\nexport default Handlebars.template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<html dir=\\\"ltr\\\" lang=\\\"en\\\">\\n\\n <head>\\n <meta content=\\\"text/html; charset=UTF-8\\\" http-equiv=\\\"Content-Type\\\" />\\n <meta name=\\\"x-apple-disable-message-reformatting\\\" />\\n <title>PLC update requested</title>\\n <meta\\n name=\\\"description\\\"\\n content=\\\"We recieved a request to update your PLC.\\\"\\n />\\n </head>\\n <div\\n style=\\\"display:none;overflow:hidden;line-height:1px;opacity:0;max-height:0;max-width:0\\\"\\n >We recieved a request to update your PLC.<div\\n >\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF</div>\\n </div>\\n\\n <body\\n style=\\\"padding:12px;padding-bottom:40px;background-color:hsl(211, 20%, 95.3%)\\\"\\n >\\n <table\\n align=\\\"center\\\"\\n width=\\\"100%\\\"\\n border=\\\"0\\\"\\n cellPadding=\\\"0\\\"\\n cellSpacing=\\\"0\\\"\\n role=\\\"presentation\\\"\\n style=\\\"max-width:37.5em\\\"\\n >\\n <tbody>\\n <tr style=\\\"width:100%\\\">\\n <td>\\n <table\\n align=\\\"center\\\"\\n width=\\\"100%\\\"\\n border=\\\"0\\\"\\n cellPadding=\\\"0\\\"\\n cellSpacing=\\\"0\\\"\\n role=\\\"presentation\\\"\\n style=\\\"padding-top:24px;padding-bottom:24px\\\"\\n >\\n <tbody>\\n <tr>\\n <td><img\\n alt=\\\"Bluesky\\\"\\n src=\\\"https://bsky.social/about/images/email/email_logo_default.png\\\"\\n style=\\\"display:block;outline:none;border:none;text-decoration:none;width:110px;margin:0 auto\\\"\\n /></td>\\n </tr>\\n </tbody>\\n </table>\\n <table\\n align=\\\"center\\\"\\n width=\\\"100%\\\"\\n border=\\\"0\\\"\\n cellPadding=\\\"0\\\"\\n cellSpacing=\\\"0\\\"\\n role=\\\"presentation\\\"\\n style=\\\"padding:24px;padding-bottom:16px;border-radius:12px;background-color:#FFFFFF\\\"\\n >\\n <tbody>\\n <tr>\\n <td>\\n <h1\\n style=\\\"font-size:26px;letter-spacing:0.25px;color:#000000;font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;margin:0px 0px;line-height:1.0\\\"\\n >PLC update requested</h1>\\n <p\\n style=\\\"font-size:16px;line-height:1.4;margin:0px 0px;letter-spacing:0.25px;color:hsl(211, 24%, 34.2%);font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;padding-top:12px;padding-bottom:12px\\\"\\n >We received a request to update your PLC identity. Your\\n confirmation code is:</p><code\\n style=\\\"display:block;padding:16px;border-radius:8px;border-width:1px;border-style:solid;background-color:hsl(211, 20%, 95.3%);border-color:hsl(211, 20%, 85.89999999999999%);font-size:14px;letter-spacing:0.25px;font-family:monospace;text-transform:uppercase\\\"\\n >\"\n + container.escapeExpression(container.lambda((depth0 != null ? lookupProperty(depth0,\"token\") : depth0), depth0))\n + \"</code>\\n <p\\n style=\\\"font-size:14px;line-height:1.4;margin:0px 0px;letter-spacing:0.25px;color:hsl(211, 20%, 53%);font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;padding-top:12px\\\"\\n >Updating your PLC identity is a very sensitive operation.\\n Please only proceed if you are confident in what you are\\n doing.</p>\\n <table\\n align=\\\"center\\\"\\n width=\\\"100%\\\"\\n border=\\\"0\\\"\\n cellPadding=\\\"0\\\"\\n cellSpacing=\\\"0\\\"\\n role=\\\"presentation\\\"\\n style=\\\"padding-top:24px\\\"\\n >\\n <tbody>\\n <tr>\\n <td>\\n <hr\\n style=\\\"width:100%;border:none;border-top:1px solid #eaeaea;margin:0\\\"\\n />\\n <table\\n align=\\\"center\\\"\\n width=\\\"100%\\\"\\n border=\\\"0\\\"\\n cellPadding=\\\"0\\\"\\n cellSpacing=\\\"0\\\"\\n role=\\\"presentation\\\"\\n style=\\\"padding-top:16px;vertical-align:middle\\\"\\n >\\n <tbody style=\\\"width:100%\\\">\\n <tr style=\\\"width:100%\\\">\\n <td data-id=\\\"__react-email-column\\\">\\n <p\\n style=\\\"font-size:14px;line-height:1.4;margin:0px 0px;color:hsl(211, 20%, 53%);font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;letter-spacing:0.25px\\\"\\n ><a\\n href=\\\"https://bsky.app\\\"\\n style=\\\"color:hsl(211, 20%, 53%);text-decoration:none;text-decoration-line:underline;font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;margin:0px 0px;line-height:1.0;font-size:14px;letter-spacing:0.25px\\\"\\n target=\\\"_blank\\\"\\n >Bluesky</a>, the social internet</p>\\n </td>\\n <td\\n data-id=\\\"__react-email-column\\\"\\n style=\\\"width:24px\\\"\\n ><img\\n alt=\\\"\uD83E\uDD8B\\\"\\n src=\\\"https://bsky.social/about/images/email/email_mark_dark.png\\\"\\n style=\\\"display:block;outline:none;border:none;text-decoration:none;width:24px\\\"\\n /></td>\\n </tr>\\n </tbody>\\n </table>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n <table\\n align=\\\"center\\\"\\n width=\\\"100%\\\"\\n border=\\\"0\\\"\\n cellPadding=\\\"0\\\"\\n cellSpacing=\\\"0\\\"\\n role=\\\"presentation\\\"\\n style=\\\"height:500px\\\"\\n >\\n <tbody>\\n <tr>\\n <td></td>\\n </tr>\\n </tbody>\\n </table>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </body>\\n\\n</html>\";\n},\"useData\":true});"],
4
+ "sourcesContent": ["import * as Handlebars from 'handlebars/runtime';\nHandlebars.registerHelper({});\nHandlebars.registerPartial({});\nexport default Handlebars.template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<html dir=\\\"ltr\\\" lang=\\\"en\\\">\\n\\n <head>\\n <meta content=\\\"text/html; charset=UTF-8\\\" http-equiv=\\\"Content-Type\\\" />\\n <meta name=\\\"x-apple-disable-message-reformatting\\\" />\\n <title>PLC update requested</title>\\n <meta\\n name=\\\"description\\\"\\n content=\\\"We received a request to update your PLC.\\\"\\n />\\n </head>\\n <div\\n style=\\\"display:none;overflow:hidden;line-height:1px;opacity:0;max-height:0;max-width:0\\\"\\n >We received a request to update your PLC.<div\\n >\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF\u00A0\u200C\u200B\u200D\u200E\u200F\uFEFF</div>\\n </div>\\n\\n <body\\n style=\\\"padding:12px;padding-bottom:40px;background-color:hsl(211, 20%, 95.3%)\\\"\\n >\\n <table\\n align=\\\"center\\\"\\n width=\\\"100%\\\"\\n border=\\\"0\\\"\\n cellPadding=\\\"0\\\"\\n cellSpacing=\\\"0\\\"\\n role=\\\"presentation\\\"\\n style=\\\"max-width:37.5em\\\"\\n >\\n <tbody>\\n <tr style=\\\"width:100%\\\">\\n <td>\\n <table\\n align=\\\"center\\\"\\n width=\\\"100%\\\"\\n border=\\\"0\\\"\\n cellPadding=\\\"0\\\"\\n cellSpacing=\\\"0\\\"\\n role=\\\"presentation\\\"\\n style=\\\"padding-top:24px;padding-bottom:24px\\\"\\n >\\n <tbody>\\n <tr>\\n <td><img\\n alt=\\\"Bluesky\\\"\\n src=\\\"https://bsky.social/about/images/email/email_logo_default.png\\\"\\n style=\\\"display:block;outline:none;border:none;text-decoration:none;width:110px;margin:0 auto\\\"\\n /></td>\\n </tr>\\n </tbody>\\n </table>\\n <table\\n align=\\\"center\\\"\\n width=\\\"100%\\\"\\n border=\\\"0\\\"\\n cellPadding=\\\"0\\\"\\n cellSpacing=\\\"0\\\"\\n role=\\\"presentation\\\"\\n style=\\\"padding:24px;padding-bottom:16px;border-radius:12px;background-color:#FFFFFF\\\"\\n >\\n <tbody>\\n <tr>\\n <td>\\n <h1\\n style=\\\"font-size:26px;letter-spacing:0.25px;color:#000000;font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;margin:0px 0px;line-height:1.0\\\"\\n >PLC update requested</h1>\\n <p\\n style=\\\"font-size:16px;line-height:1.4;margin:0px 0px;letter-spacing:0.25px;color:hsl(211, 24%, 34.2%);font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;padding-top:12px;padding-bottom:12px\\\"\\n >We received a request to update your PLC identity. Your\\n confirmation code is:</p><code\\n style=\\\"display:block;padding:16px;border-radius:8px;border-width:1px;border-style:solid;background-color:hsl(211, 20%, 95.3%);border-color:hsl(211, 20%, 85.89999999999999%);font-size:14px;letter-spacing:0.25px;font-family:monospace;text-transform:uppercase\\\"\\n >\"\n + container.escapeExpression(container.lambda((depth0 != null ? lookupProperty(depth0,\"token\") : depth0), depth0))\n + \"</code>\\n <p\\n style=\\\"font-size:14px;line-height:1.4;margin:0px 0px;letter-spacing:0.25px;color:hsl(211, 20%, 53%);font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;padding-top:12px\\\"\\n >Updating your PLC identity is a very sensitive operation.\\n Please only proceed if you are confident in what you are\\n doing.</p>\\n <table\\n align=\\\"center\\\"\\n width=\\\"100%\\\"\\n border=\\\"0\\\"\\n cellPadding=\\\"0\\\"\\n cellSpacing=\\\"0\\\"\\n role=\\\"presentation\\\"\\n style=\\\"padding-top:24px\\\"\\n >\\n <tbody>\\n <tr>\\n <td>\\n <hr\\n style=\\\"width:100%;border:none;border-top:1px solid #eaeaea;margin:0\\\"\\n />\\n <table\\n align=\\\"center\\\"\\n width=\\\"100%\\\"\\n border=\\\"0\\\"\\n cellPadding=\\\"0\\\"\\n cellSpacing=\\\"0\\\"\\n role=\\\"presentation\\\"\\n style=\\\"padding-top:16px;vertical-align:middle\\\"\\n >\\n <tbody style=\\\"width:100%\\\">\\n <tr style=\\\"width:100%\\\">\\n <td data-id=\\\"__react-email-column\\\">\\n <p\\n style=\\\"font-size:14px;line-height:1.4;margin:0px 0px;color:hsl(211, 20%, 53%);font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;letter-spacing:0.25px\\\"\\n ><a\\n href=\\\"https://bsky.app\\\"\\n style=\\\"color:hsl(211, 20%, 53%);text-decoration:none;text-decoration-line:underline;font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;margin:0px 0px;line-height:1.0;font-size:14px;letter-spacing:0.25px\\\"\\n target=\\\"_blank\\\"\\n >Bluesky</a>, the social internet</p>\\n </td>\\n <td\\n data-id=\\\"__react-email-column\\\"\\n style=\\\"width:24px\\\"\\n ><img\\n alt=\\\"\uD83E\uDD8B\\\"\\n src=\\\"https://bsky.social/about/images/email/email_mark_dark.png\\\"\\n style=\\\"display:block;outline:none;border:none;text-decoration:none;width:24px\\\"\\n /></td>\\n </tr>\\n </tbody>\\n </table>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n <table\\n align=\\\"center\\\"\\n width=\\\"100%\\\"\\n border=\\\"0\\\"\\n cellPadding=\\\"0\\\"\\n cellSpacing=\\\"0\\\"\\n role=\\\"presentation\\\"\\n style=\\\"height:500px\\\"\\n >\\n <tbody>\\n <tr>\\n <td></td>\\n </tr>\\n </tbody>\\n </table>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </body>\\n\\n</html>\";\n},\"useData\":true});"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAA4B;AAC5B,WAAW,eAAe,CAAC,CAAC;AAC5B,WAAW,gBAAgB,CAAC,CAAC;AAC7B,IAAO,wBAAQ,WAAW,SAAS,EAAC,YAAW,CAAC,GAAE,UAAU,GAAE,QAAO,SAAS,WAAU,QAAO,SAAQ,UAAS,MAAM;AAClH,MAAI,iBAAiB,UAAU,kBAAkB,SAAS,QAAQ,cAAc;AAC5E,QAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,YAAY,GAAG;AAC9D,aAAO,OAAO;AAAA,IAChB;AACA,WAAO;AAAA,EACX;AAEF,SAAO,42OACH,UAAU,iBAAiB,UAAU,OAAQ,UAAU,OAAO,eAAe,QAAO,OAAO,IAAI,QAAS,MAAM,CAAC,IAC/G;AACN,GAAE,WAAU,KAAI,CAAC;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/pds",
3
- "version": "0.4.122",
3
+ "version": "0.4.123",
4
4
  "license": "MIT",
5
5
  "description": "Reference implementation of atproto Personal Data Server (PDS)",
6
6
  "keywords": [
@@ -50,17 +50,17 @@
50
50
  "zod": "^3.23.8",
51
51
  "@atproto-labs/fetch-node": "0.1.8",
52
52
  "@atproto-labs/xrpc-utils": "0.0.11",
53
- "@atproto/api": "^0.14.21",
53
+ "@atproto/api": "^0.14.22",
54
54
  "@atproto/aws": "^0.2.20",
55
55
  "@atproto/common": "^0.4.10",
56
- "@atproto/crypto": "^0.4.4",
57
56
  "@atproto/identity": "^0.4.7",
58
57
  "@atproto/lexicon": "^0.4.10",
59
58
  "@atproto/oauth-provider": "^0.6.6",
60
59
  "@atproto/repo": "^0.8.0",
61
60
  "@atproto/syntax": "^0.4.0",
62
61
  "@atproto/xrpc": "^0.6.12",
63
- "@atproto/xrpc-server": "^0.7.15"
62
+ "@atproto/xrpc-server": "^0.7.15",
63
+ "@atproto/crypto": "^0.4.4"
64
64
  },
65
65
  "devDependencies": {
66
66
  "@atproto/pds-entryway": "npm:@atproto/pds@0.3.0-entryway.3",
@@ -78,8 +78,8 @@
78
78
  "ts-node": "^10.8.2",
79
79
  "typescript": "^5.6.3",
80
80
  "ws": "^8.12.0",
81
- "@atproto/api": "^0.14.21",
82
- "@atproto/bsky": "^0.0.138",
81
+ "@atproto/api": "^0.14.22",
82
+ "@atproto/bsky": "^0.0.139",
83
83
  "@atproto/lex-cli": "^0.7.2",
84
84
  "@atproto/oauth-client-browser-example": "0.0.2"
85
85
  },
@@ -75,11 +75,13 @@ import * as ComAtprotoSyncGetBlob from './types/com/atproto/sync/getBlob.js'
75
75
  import * as ComAtprotoSyncGetBlocks from './types/com/atproto/sync/getBlocks.js'
76
76
  import * as ComAtprotoSyncGetCheckout from './types/com/atproto/sync/getCheckout.js'
77
77
  import * as ComAtprotoSyncGetHead from './types/com/atproto/sync/getHead.js'
78
+ import * as ComAtprotoSyncGetHostStatus from './types/com/atproto/sync/getHostStatus.js'
78
79
  import * as ComAtprotoSyncGetLatestCommit from './types/com/atproto/sync/getLatestCommit.js'
79
80
  import * as ComAtprotoSyncGetRecord from './types/com/atproto/sync/getRecord.js'
80
81
  import * as ComAtprotoSyncGetRepo from './types/com/atproto/sync/getRepo.js'
81
82
  import * as ComAtprotoSyncGetRepoStatus from './types/com/atproto/sync/getRepoStatus.js'
82
83
  import * as ComAtprotoSyncListBlobs from './types/com/atproto/sync/listBlobs.js'
84
+ import * as ComAtprotoSyncListHosts from './types/com/atproto/sync/listHosts.js'
83
85
  import * as ComAtprotoSyncListRepos from './types/com/atproto/sync/listRepos.js'
84
86
  import * as ComAtprotoSyncListReposByCollection from './types/com/atproto/sync/listReposByCollection.js'
85
87
  import * as ComAtprotoSyncNotifyOfUpdate from './types/com/atproto/sync/notifyOfUpdate.js'
@@ -1106,6 +1108,17 @@ export class ComAtprotoSyncNS {
1106
1108
  return this._server.xrpc.method(nsid, cfg)
1107
1109
  }
1108
1110
 
1111
+ getHostStatus<AV extends AuthVerifier>(
1112
+ cfg: ConfigOf<
1113
+ AV,
1114
+ ComAtprotoSyncGetHostStatus.Handler<ExtractAuth<AV>>,
1115
+ ComAtprotoSyncGetHostStatus.HandlerReqCtx<ExtractAuth<AV>>
1116
+ >,
1117
+ ) {
1118
+ const nsid = 'com.atproto.sync.getHostStatus' // @ts-ignore
1119
+ return this._server.xrpc.method(nsid, cfg)
1120
+ }
1121
+
1109
1122
  getLatestCommit<AV extends AuthVerifier>(
1110
1123
  cfg: ConfigOf<
1111
1124
  AV,
@@ -1161,6 +1174,17 @@ export class ComAtprotoSyncNS {
1161
1174
  return this._server.xrpc.method(nsid, cfg)
1162
1175
  }
1163
1176
 
1177
+ listHosts<AV extends AuthVerifier>(
1178
+ cfg: ConfigOf<
1179
+ AV,
1180
+ ComAtprotoSyncListHosts.Handler<ExtractAuth<AV>>,
1181
+ ComAtprotoSyncListHosts.HandlerReqCtx<ExtractAuth<AV>>
1182
+ >,
1183
+ ) {
1184
+ const nsid = 'com.atproto.sync.listHosts' // @ts-ignore
1185
+ return this._server.xrpc.method(nsid, cfg)
1186
+ }
1187
+
1164
1188
  listRepos<AV extends AuthVerifier>(
1165
1189
  cfg: ConfigOf<
1166
1190
  AV,
@@ -3365,6 +3365,16 @@ export const schemaDict = {
3365
3365
  },
3366
3366
  },
3367
3367
  },
3368
+ ComAtprotoSyncDefs: {
3369
+ lexicon: 1,
3370
+ id: 'com.atproto.sync.defs',
3371
+ defs: {
3372
+ hostStatus: {
3373
+ type: 'string',
3374
+ knownValues: ['active', 'idle', 'offline', 'throttled', 'banned'],
3375
+ },
3376
+ },
3377
+ },
3368
3378
  ComAtprotoSyncGetBlob: {
3369
3379
  lexicon: 1,
3370
3380
  id: 'com.atproto.sync.getBlob',
@@ -3525,6 +3535,59 @@ export const schemaDict = {
3525
3535
  },
3526
3536
  },
3527
3537
  },
3538
+ ComAtprotoSyncGetHostStatus: {
3539
+ lexicon: 1,
3540
+ id: 'com.atproto.sync.getHostStatus',
3541
+ defs: {
3542
+ main: {
3543
+ type: 'query',
3544
+ description:
3545
+ 'Returns information about a specified upstream host, as consumed by the server. Implemented by relays.',
3546
+ parameters: {
3547
+ type: 'params',
3548
+ required: ['hostname'],
3549
+ properties: {
3550
+ hostname: {
3551
+ type: 'string',
3552
+ description:
3553
+ 'Hostname of the host (eg, PDS or relay) being queried.',
3554
+ },
3555
+ },
3556
+ },
3557
+ output: {
3558
+ encoding: 'application/json',
3559
+ schema: {
3560
+ type: 'object',
3561
+ required: ['hostname'],
3562
+ properties: {
3563
+ hostname: {
3564
+ type: 'string',
3565
+ },
3566
+ seq: {
3567
+ type: 'integer',
3568
+ description:
3569
+ 'Recent repo stream event sequence number. May be delayed from actual stream processing (eg, persisted cursor not in-memory cursor).',
3570
+ },
3571
+ accountCount: {
3572
+ type: 'integer',
3573
+ description:
3574
+ 'Number of accounts on the server which are associated with the upstream host. Note that the upstream may actually have more accounts.',
3575
+ },
3576
+ status: {
3577
+ type: 'ref',
3578
+ ref: 'lex:com.atproto.sync.defs#hostStatus',
3579
+ },
3580
+ },
3581
+ },
3582
+ },
3583
+ errors: [
3584
+ {
3585
+ name: 'HostNotFound',
3586
+ },
3587
+ ],
3588
+ },
3589
+ },
3590
+ },
3528
3591
  ComAtprotoSyncGetLatestCommit: {
3529
3592
  lexicon: 1,
3530
3593
  id: 'com.atproto.sync.getLatestCommit',
@@ -3805,6 +3868,74 @@ export const schemaDict = {
3805
3868
  },
3806
3869
  },
3807
3870
  },
3871
+ ComAtprotoSyncListHosts: {
3872
+ lexicon: 1,
3873
+ id: 'com.atproto.sync.listHosts',
3874
+ defs: {
3875
+ main: {
3876
+ type: 'query',
3877
+ description:
3878
+ 'Enumerates upstream hosts (eg, PDS or relay instances) that this service consumes from. Implemented by relays.',
3879
+ parameters: {
3880
+ type: 'params',
3881
+ properties: {
3882
+ limit: {
3883
+ type: 'integer',
3884
+ minimum: 1,
3885
+ maximum: 1000,
3886
+ default: 200,
3887
+ },
3888
+ cursor: {
3889
+ type: 'string',
3890
+ },
3891
+ },
3892
+ },
3893
+ output: {
3894
+ encoding: 'application/json',
3895
+ schema: {
3896
+ type: 'object',
3897
+ required: ['hosts'],
3898
+ properties: {
3899
+ cursor: {
3900
+ type: 'string',
3901
+ },
3902
+ hosts: {
3903
+ type: 'array',
3904
+ items: {
3905
+ type: 'ref',
3906
+ ref: 'lex:com.atproto.sync.listHosts#host',
3907
+ },
3908
+ description:
3909
+ 'Sort order is not formally specified. Recommended order is by time host was first seen by the server, with oldest first.',
3910
+ },
3911
+ },
3912
+ },
3913
+ },
3914
+ },
3915
+ host: {
3916
+ type: 'object',
3917
+ required: ['hostname'],
3918
+ properties: {
3919
+ hostname: {
3920
+ type: 'string',
3921
+ description: 'hostname of server; not a URL (no scheme)',
3922
+ },
3923
+ seq: {
3924
+ type: 'integer',
3925
+ description:
3926
+ 'Recent repo stream event sequence number. May be delayed from actual stream processing (eg, persisted cursor not in-memory cursor).',
3927
+ },
3928
+ accountCount: {
3929
+ type: 'integer',
3930
+ },
3931
+ status: {
3932
+ type: 'ref',
3933
+ ref: 'lex:com.atproto.sync.defs#hostStatus',
3934
+ },
3935
+ },
3936
+ },
3937
+ },
3938
+ },
3808
3939
  ComAtprotoSyncListRepos: {
3809
3940
  lexicon: 1,
3810
3941
  id: 'com.atproto.sync.listRepos',
@@ -3992,6 +4123,11 @@ export const schemaDict = {
3992
4123
  },
3993
4124
  },
3994
4125
  },
4126
+ errors: [
4127
+ {
4128
+ name: 'HostBanned',
4129
+ },
4130
+ ],
3995
4131
  },
3996
4132
  },
3997
4133
  },
@@ -10928,7 +11064,7 @@ export const schemaDict = {
10928
11064
  value: {
10929
11065
  type: 'string',
10930
11066
  minLength: 1,
10931
- maxLength: 32,
11067
+ maxLength: 64,
10932
11068
  minGraphemes: 1,
10933
11069
  maxGraphemes: 1,
10934
11070
  },
@@ -11714,7 +11850,7 @@ export const schemaDict = {
11714
11850
  value: {
11715
11851
  type: 'string',
11716
11852
  minLength: 1,
11717
- maxLength: 32,
11853
+ maxLength: 64,
11718
11854
  minGraphemes: 1,
11719
11855
  maxGraphemes: 1,
11720
11856
  },
@@ -15315,15 +15451,18 @@ export const ids = {
15315
15451
  ComAtprotoServerResetPassword: 'com.atproto.server.resetPassword',
15316
15452
  ComAtprotoServerRevokeAppPassword: 'com.atproto.server.revokeAppPassword',
15317
15453
  ComAtprotoServerUpdateEmail: 'com.atproto.server.updateEmail',
15454
+ ComAtprotoSyncDefs: 'com.atproto.sync.defs',
15318
15455
  ComAtprotoSyncGetBlob: 'com.atproto.sync.getBlob',
15319
15456
  ComAtprotoSyncGetBlocks: 'com.atproto.sync.getBlocks',
15320
15457
  ComAtprotoSyncGetCheckout: 'com.atproto.sync.getCheckout',
15321
15458
  ComAtprotoSyncGetHead: 'com.atproto.sync.getHead',
15459
+ ComAtprotoSyncGetHostStatus: 'com.atproto.sync.getHostStatus',
15322
15460
  ComAtprotoSyncGetLatestCommit: 'com.atproto.sync.getLatestCommit',
15323
15461
  ComAtprotoSyncGetRecord: 'com.atproto.sync.getRecord',
15324
15462
  ComAtprotoSyncGetRepo: 'com.atproto.sync.getRepo',
15325
15463
  ComAtprotoSyncGetRepoStatus: 'com.atproto.sync.getRepoStatus',
15326
15464
  ComAtprotoSyncListBlobs: 'com.atproto.sync.listBlobs',
15465
+ ComAtprotoSyncListHosts: 'com.atproto.sync.listHosts',
15327
15466
  ComAtprotoSyncListRepos: 'com.atproto.sync.listRepos',
15328
15467
  ComAtprotoSyncListReposByCollection: 'com.atproto.sync.listReposByCollection',
15329
15468
  ComAtprotoSyncNotifyOfUpdate: 'com.atproto.sync.notifyOfUpdate',
@@ -0,0 +1,23 @@
1
+ /**
2
+ * GENERATED CODE - DO NOT MODIFY
3
+ */
4
+ import { type ValidationResult, BlobRef } from '@atproto/lexicon'
5
+ import { CID } from 'multiformats/cid'
6
+ import { validate as _validate } from '../../../../lexicons'
7
+ import {
8
+ type $Typed,
9
+ is$typed as _is$typed,
10
+ type OmitKey,
11
+ } from '../../../../util'
12
+
13
+ const is$typed = _is$typed,
14
+ validate = _validate
15
+ const id = 'com.atproto.sync.defs'
16
+
17
+ export type HostStatus =
18
+ | 'active'
19
+ | 'idle'
20
+ | 'offline'
21
+ | 'throttled'
22
+ | 'banned'
23
+ | (string & {})