@atproto/xrpc 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -8870,8 +8870,8 @@ var require_dist = __commonJS({
8870
8870
  });
8871
8871
 
8872
8872
  // src/index.ts
8873
- var src_exports4 = {};
8874
- __export(src_exports4, {
8873
+ var src_exports2 = {};
8874
+ __export(src_exports2, {
8875
8875
  Client: () => Client,
8876
8876
  ResponseType: () => ResponseType,
8877
8877
  ResponseTypeNames: () => ResponseTypeNames,
@@ -8884,7 +8884,7 @@ __export(src_exports4, {
8884
8884
  defaultFetchHandler: () => defaultFetchHandler,
8885
8885
  errorResponseBody: () => errorResponseBody
8886
8886
  });
8887
- module.exports = __toCommonJS(src_exports4);
8887
+ module.exports = __toCommonJS(src_exports2);
8888
8888
 
8889
8889
  // ../../node_modules/zod/lib/index.mjs
8890
8890
  var util;
@@ -12493,7 +12493,7 @@ var ResponseType = /* @__PURE__ */ ((ResponseType2) => {
12493
12493
  ResponseType2[ResponseType2["InternalServerError"] = 500] = "InternalServerError";
12494
12494
  ResponseType2[ResponseType2["MethodNotImplemented"] = 501] = "MethodNotImplemented";
12495
12495
  ResponseType2[ResponseType2["UpstreamFailure"] = 502] = "UpstreamFailure";
12496
- ResponseType2[ResponseType2["NotEnoughResouces"] = 503] = "NotEnoughResouces";
12496
+ ResponseType2[ResponseType2["NotEnoughResources"] = 503] = "NotEnoughResources";
12497
12497
  ResponseType2[ResponseType2["UpstreamTimeout"] = 504] = "UpstreamTimeout";
12498
12498
  return ResponseType2;
12499
12499
  })(ResponseType || {});
@@ -12509,7 +12509,7 @@ var ResponseTypeNames = {
12509
12509
  [500 /* InternalServerError */]: "InternalServerError",
12510
12510
  [501 /* MethodNotImplemented */]: "MethodNotImplemented",
12511
12511
  [502 /* UpstreamFailure */]: "UpstreamFailure",
12512
- [503 /* NotEnoughResouces */]: "NotEnoughResouces",
12512
+ [503 /* NotEnoughResources */]: "NotEnoughResources",
12513
12513
  [504 /* UpstreamTimeout */]: "UpstreamTimeout"
12514
12514
  };
12515
12515
  var ResponseTypeStrings = {
@@ -12524,7 +12524,7 @@ var ResponseTypeStrings = {
12524
12524
  [500 /* InternalServerError */]: "Internal Server Error",
12525
12525
  [501 /* MethodNotImplemented */]: "Method Not Implemented",
12526
12526
  [502 /* UpstreamFailure */]: "Upstream Failure",
12527
- [503 /* NotEnoughResouces */]: "Not Enough Resouces",
12527
+ [503 /* NotEnoughResources */]: "Not Enough Resources",
12528
12528
  [504 /* UpstreamTimeout */]: "Upstream Timeout"
12529
12529
  };
12530
12530
  var XRPCResponse = class {
@@ -12535,7 +12535,7 @@ var XRPCResponse = class {
12535
12535
  }
12536
12536
  };
12537
12537
  var XRPCError = class extends Error {
12538
- constructor(status, error, message) {
12538
+ constructor(status, error, message, headers) {
12539
12539
  super(message || error || ResponseTypeStrings[status]);
12540
12540
  this.status = status;
12541
12541
  this.error = error;
@@ -12543,6 +12543,7 @@ var XRPCError = class extends Error {
12543
12543
  if (!this.error) {
12544
12544
  this.error = ResponseTypeNames[status];
12545
12545
  }
12546
+ this.headers = headers;
12546
12547
  }
12547
12548
  };
12548
12549
  var XRPCInvalidResponseError = class extends XRPCError {
@@ -12558,7 +12559,73 @@ var XRPCInvalidResponseError = class extends XRPCError {
12558
12559
  }
12559
12560
  };
12560
12561
 
12561
- // ../nsid/src/index.ts
12562
+ // ../syntax/src/handle.ts
12563
+ var ensureValidHandle = (handle2) => {
12564
+ if (!/^[a-zA-Z0-9.-]*$/.test(handle2)) {
12565
+ throw new InvalidHandleError(
12566
+ "Disallowed characters in handle (ASCII letters, digits, dashes, periods only)"
12567
+ );
12568
+ }
12569
+ if (handle2.length > 253) {
12570
+ throw new InvalidHandleError("Handle is too long (253 chars max)");
12571
+ }
12572
+ const labels = handle2.split(".");
12573
+ if (labels.length < 2) {
12574
+ throw new InvalidHandleError("Handle domain needs at least two parts");
12575
+ }
12576
+ for (let i = 0; i < labels.length; i++) {
12577
+ const l = labels[i];
12578
+ if (l.length < 1) {
12579
+ throw new InvalidHandleError("Handle parts can not be empty");
12580
+ }
12581
+ if (l.length > 63) {
12582
+ throw new InvalidHandleError("Handle part too long (max 63 chars)");
12583
+ }
12584
+ if (l.endsWith("-") || l.startsWith("-")) {
12585
+ throw new InvalidHandleError(
12586
+ "Handle parts can not start or end with hyphens"
12587
+ );
12588
+ }
12589
+ if (i + 1 == labels.length && !/^[a-zA-Z]/.test(l)) {
12590
+ throw new InvalidHandleError(
12591
+ "Handle final component (TLD) must start with ASCII letter"
12592
+ );
12593
+ }
12594
+ }
12595
+ };
12596
+ var InvalidHandleError = class extends Error {
12597
+ };
12598
+
12599
+ // ../syntax/src/did.ts
12600
+ var ensureValidDid = (did2) => {
12601
+ if (!/^[a-zA-Z0-9._:%-]*$/.test(did2)) {
12602
+ throw new InvalidDidError(
12603
+ "Disallowed characters in DID (ASCII letters, digits, and a couple other characters only)"
12604
+ );
12605
+ }
12606
+ const parts = did2.split(":");
12607
+ if (parts.length < 3) {
12608
+ throw new InvalidDidError(
12609
+ "DID requires prefix, method, and method-specific content"
12610
+ );
12611
+ }
12612
+ if (parts[0] != "did") {
12613
+ throw new InvalidDidError('DID requires "did:" prefix');
12614
+ }
12615
+ if (!/^[a-z]+$/.test(parts[1])) {
12616
+ throw new InvalidDidError("DID method must be lower-case letters");
12617
+ }
12618
+ if (did2.endsWith(":") || did2.endsWith("%")) {
12619
+ throw new InvalidDidError('DID can not end with ":" or "%"');
12620
+ }
12621
+ if (did2.length > 2 * 1024) {
12622
+ throw new InvalidDidError("DID is too long (2048 chars max)");
12623
+ }
12624
+ };
12625
+ var InvalidDidError = class extends Error {
12626
+ };
12627
+
12628
+ // ../syntax/src/nsid.ts
12562
12629
  var NSID = class {
12563
12630
  constructor(nsid2) {
12564
12631
  this.segments = [];
@@ -12626,6 +12693,75 @@ var ensureValidNsid = (nsid2) => {
12626
12693
  var InvalidNsidError = class extends Error {
12627
12694
  };
12628
12695
 
12696
+ // ../syntax/src/aturi_validation.ts
12697
+ var ensureValidAtUri = (uri2) => {
12698
+ const uriParts = uri2.split("#");
12699
+ if (uriParts.length > 2) {
12700
+ throw new Error('ATURI can have at most one "#", separating fragment out');
12701
+ }
12702
+ const fragmentPart = uriParts[1] || null;
12703
+ uri2 = uriParts[0];
12704
+ if (!/^[a-zA-Z0-9._~:@!$&')(*+,;=%/-]*$/.test(uri2)) {
12705
+ throw new Error("Disallowed characters in ATURI (ASCII)");
12706
+ }
12707
+ const parts = uri2.split("/");
12708
+ if (parts.length >= 3 && (parts[0] != "at:" || parts[1].length != 0)) {
12709
+ throw new Error('ATURI must start with "at://"');
12710
+ }
12711
+ if (parts.length < 3) {
12712
+ throw new Error("ATURI requires at least method and authority sections");
12713
+ }
12714
+ try {
12715
+ ensureValidHandle(parts[2]);
12716
+ } catch {
12717
+ try {
12718
+ ensureValidDid(parts[2]);
12719
+ } catch {
12720
+ throw new Error("ATURI authority must be a valid handle or DID");
12721
+ }
12722
+ }
12723
+ if (parts.length >= 4) {
12724
+ if (parts[3].length == 0) {
12725
+ throw new Error(
12726
+ "ATURI can not have a slash after authority without a path segment"
12727
+ );
12728
+ }
12729
+ try {
12730
+ ensureValidNsid(parts[3]);
12731
+ } catch {
12732
+ throw new Error(
12733
+ "ATURI requires first path segment (if supplied) to be valid NSID"
12734
+ );
12735
+ }
12736
+ }
12737
+ if (parts.length >= 5) {
12738
+ if (parts[4].length == 0) {
12739
+ throw new Error(
12740
+ "ATURI can not have a slash after collection, unless record key is provided"
12741
+ );
12742
+ }
12743
+ }
12744
+ if (parts.length >= 6) {
12745
+ throw new Error(
12746
+ "ATURI path can have at most two parts, and no trailing slash"
12747
+ );
12748
+ }
12749
+ if (uriParts.length >= 2 && fragmentPart == null) {
12750
+ throw new Error("ATURI fragment must be non-empty and start with slash");
12751
+ }
12752
+ if (fragmentPart != null) {
12753
+ if (fragmentPart.length == 0 || fragmentPart[0] != "/") {
12754
+ throw new Error("ATURI fragment must be non-empty and start with slash");
12755
+ }
12756
+ if (!/^\/[a-zA-Z0-9._~:@!$&')(*+,;=%[\]/-]*$/.test(fragmentPart)) {
12757
+ throw new Error("Disallowed characters in ATURI fragment (ASCII)");
12758
+ }
12759
+ }
12760
+ if (uri2.length > 8 * 1024) {
12761
+ throw new Error("ATURI is far too long");
12762
+ }
12763
+ };
12764
+
12629
12765
  // ../common-web/src/check.ts
12630
12766
  var check_exports = {};
12631
12767
  __export(check_exports, {
@@ -13856,1189 +13992,6 @@ var validateLanguage = (langTag) => {
13856
13992
  };
13857
13993
  var bcp47Regexp = /^((?<grandfathered>(en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang))|((?<language>([A-Za-z]{2,3}(-(?<extlang>[A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-(?<script>[A-Za-z]{4}))?(-(?<region>[A-Za-z]{2}|[0-9]{3}))?(-(?<variant>[A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-(?<extension>[0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(?<privateUseA>x(-[A-Za-z0-9]{1,8})+))?)|(?<privateUseB>x(-[A-Za-z0-9]{1,8})+))$/;
13858
13994
 
13859
- // ../identifier/src/reserved.ts
13860
- var atpSpecific = [
13861
- "at",
13862
- "atp",
13863
- "plc",
13864
- "pds",
13865
- "did",
13866
- "repo",
13867
- "tid",
13868
- "nsid",
13869
- "xrpc",
13870
- "lex",
13871
- "lexicon",
13872
- "bsky",
13873
- "bluesky",
13874
- "handle"
13875
- ];
13876
- var commonlyReserved = [
13877
- "about",
13878
- "abuse",
13879
- "access",
13880
- "account",
13881
- "accounts",
13882
- "acme",
13883
- "activate",
13884
- "activities",
13885
- "activity",
13886
- "ad",
13887
- "add",
13888
- "address",
13889
- "adm",
13890
- "admanager",
13891
- "admin",
13892
- "administration",
13893
- "administrator",
13894
- "administrators",
13895
- "admins",
13896
- "ads",
13897
- "adsense",
13898
- "adult",
13899
- "advertising",
13900
- "adwords",
13901
- "affiliate",
13902
- "affiliatepage",
13903
- "affiliates",
13904
- "afp",
13905
- "ajax",
13906
- "all",
13907
- "alpha",
13908
- "analysis",
13909
- "analytics",
13910
- "android",
13911
- "anon",
13912
- "anonymous",
13913
- "answer",
13914
- "answers",
13915
- "ap",
13916
- "api",
13917
- "apis",
13918
- "app",
13919
- "appengine",
13920
- "appnews",
13921
- "apps",
13922
- "archive",
13923
- "archives",
13924
- "article",
13925
- "asdf",
13926
- "asset",
13927
- "assets",
13928
- "auth",
13929
- "authentication",
13930
- "avatar",
13931
- "backup",
13932
- "bank",
13933
- "banner",
13934
- "banners",
13935
- "base",
13936
- "beginners",
13937
- "beta",
13938
- "billing",
13939
- "bin",
13940
- "binaries",
13941
- "binary",
13942
- "blackberry",
13943
- "blog",
13944
- "blogs",
13945
- "blogsearch",
13946
- "board",
13947
- "book",
13948
- "bookmark",
13949
- "bookmarks",
13950
- "books",
13951
- "bot",
13952
- "bots",
13953
- "bug",
13954
- "bugs",
13955
- "business",
13956
- "buy",
13957
- "buzz",
13958
- "cache",
13959
- "calendar",
13960
- "call",
13961
- "campaign",
13962
- "cancel",
13963
- "captcha",
13964
- "career",
13965
- "careers",
13966
- "cart",
13967
- "catalog",
13968
- "catalogs",
13969
- "categories",
13970
- "category",
13971
- "cdn",
13972
- "cgi",
13973
- "cgi-bin",
13974
- "changelog",
13975
- "chart",
13976
- "charts",
13977
- "chat",
13978
- "check",
13979
- "checked",
13980
- "checking",
13981
- "checkout",
13982
- "client",
13983
- "cliente",
13984
- "clients",
13985
- "clients1",
13986
- "cnarne",
13987
- "code",
13988
- "comercial",
13989
- "comment",
13990
- "comments",
13991
- "communities",
13992
- "community",
13993
- "company",
13994
- "compare",
13995
- "compras",
13996
- "config",
13997
- "configuration",
13998
- "confirm",
13999
- "confirmation",
14000
- "connect",
14001
- "contact",
14002
- "contacts",
14003
- "contactus",
14004
- "contact-us",
14005
- "contact_us",
14006
- "content",
14007
- "contest",
14008
- "contribute",
14009
- "contributor",
14010
- "contributors",
14011
- "coppa",
14012
- "copyright",
14013
- "copyrights",
14014
- "core",
14015
- "corp",
14016
- "countries",
14017
- "country",
14018
- "cpanel",
14019
- "create",
14020
- "css",
14021
- "cssproxy",
14022
- "customise",
14023
- "customize",
14024
- "dashboard",
14025
- "data",
14026
- "db",
14027
- "default",
14028
- "delete",
14029
- "demo",
14030
- "design",
14031
- "designer",
14032
- "desktop",
14033
- "destroy",
14034
- "dev",
14035
- "devel",
14036
- "developer",
14037
- "developers",
14038
- "devs",
14039
- "diagram",
14040
- "diary",
14041
- "dict",
14042
- "dictionary",
14043
- "die",
14044
- "dir",
14045
- "directory",
14046
- "direct_messages",
14047
- "direct-messages",
14048
- "dist",
14049
- "diversity",
14050
- "dl",
14051
- "dmca",
14052
- "doc",
14053
- "docs",
14054
- "documentation",
14055
- "documentations",
14056
- "documents",
14057
- "domain",
14058
- "domains",
14059
- "donate",
14060
- "download",
14061
- "downloads",
14062
- "e",
14063
- "e-mail",
14064
- "earth",
14065
- "ecommerce",
14066
- "edit",
14067
- "edits",
14068
- "editor",
14069
- "edu",
14070
- "education",
14071
- "email",
14072
- "embed",
14073
- "embedded",
14074
- "employment",
14075
- "employments",
14076
- "empty",
14077
- "enable",
14078
- "encrypted",
14079
- "end",
14080
- "engine",
14081
- "enterprise",
14082
- "enterprises",
14083
- "entries",
14084
- "entry",
14085
- "error",
14086
- "errorlog",
14087
- "errors",
14088
- "eval",
14089
- "event",
14090
- "example",
14091
- "examplecommunity",
14092
- "exampleopenid",
14093
- "examplesyn",
14094
- "examplesyndicated",
14095
- "exampleusername",
14096
- "exchange",
14097
- "exit",
14098
- "explore",
14099
- "faq",
14100
- "faqs",
14101
- "favorite",
14102
- "favorites",
14103
- "favourite",
14104
- "favourites",
14105
- "feature",
14106
- "features",
14107
- "feed",
14108
- "feedback",
14109
- "feedburner",
14110
- "feedproxy",
14111
- "feeds",
14112
- "file",
14113
- "files",
14114
- "finance",
14115
- "folder",
14116
- "folders",
14117
- "first",
14118
- "following",
14119
- "forgot",
14120
- "form",
14121
- "forms",
14122
- "forum",
14123
- "forums",
14124
- "founder",
14125
- "free",
14126
- "friend",
14127
- "friends",
14128
- "ftp",
14129
- "fuck",
14130
- "fun",
14131
- "fusion",
14132
- "gadget",
14133
- "gadgets",
14134
- "game",
14135
- "games",
14136
- "gears",
14137
- "general",
14138
- "geographic",
14139
- "get",
14140
- "gettingstarted",
14141
- "gift",
14142
- "gifts",
14143
- "gist",
14144
- "git",
14145
- "github",
14146
- "gmail",
14147
- "go",
14148
- "golang",
14149
- "goto",
14150
- "gov",
14151
- "graph",
14152
- "graphs",
14153
- "group",
14154
- "groups",
14155
- "guest",
14156
- "guests",
14157
- "guide",
14158
- "guides",
14159
- "hack",
14160
- "hacks",
14161
- "head",
14162
- "help",
14163
- "home",
14164
- "homepage",
14165
- "host",
14166
- "hosting",
14167
- "hostmaster",
14168
- "hostname",
14169
- "howto",
14170
- "how-to",
14171
- "how_to",
14172
- "html",
14173
- "htrnl",
14174
- "http",
14175
- "httpd",
14176
- "https",
14177
- "i",
14178
- "iamges",
14179
- "icon",
14180
- "icons",
14181
- "id",
14182
- "idea",
14183
- "ideas",
14184
- "im",
14185
- "image",
14186
- "images",
14187
- "img",
14188
- "imap",
14189
- "inbox",
14190
- "inboxes",
14191
- "index",
14192
- "indexes",
14193
- "info",
14194
- "information",
14195
- "inquiry",
14196
- "intranet",
14197
- "investor",
14198
- "investors",
14199
- "invitation",
14200
- "invitations",
14201
- "invite",
14202
- "invoice",
14203
- "invoices",
14204
- "imac",
14205
- "ios",
14206
- "ipad",
14207
- "iphone",
14208
- "irc",
14209
- "irnages",
14210
- "irng",
14211
- "is",
14212
- "issue",
14213
- "issues",
14214
- "it",
14215
- "item",
14216
- "items",
14217
- "java",
14218
- "javascript",
14219
- "job",
14220
- "jobs",
14221
- "join",
14222
- "js",
14223
- "json",
14224
- "jump",
14225
- "kb",
14226
- "knowledge-base",
14227
- "knowledgebase",
14228
- "lab",
14229
- "labs",
14230
- "language",
14231
- "languages",
14232
- "last",
14233
- "ldap_status",
14234
- "ldap-status",
14235
- "ldapstatus",
14236
- "legal",
14237
- "license",
14238
- "licenses",
14239
- "link",
14240
- "links",
14241
- "linux",
14242
- "list",
14243
- "lists",
14244
- "livejournal",
14245
- "lj",
14246
- "local",
14247
- "locale",
14248
- "location",
14249
- "log",
14250
- "log-in",
14251
- "log-out",
14252
- "login",
14253
- "logout",
14254
- "logs",
14255
- "log_in",
14256
- "log_out",
14257
- "m",
14258
- "mac",
14259
- "macos",
14260
- "macosx",
14261
- "mac-os",
14262
- "mac-os-x",
14263
- "mac_os_x",
14264
- "mail",
14265
- "mailer",
14266
- "mailing",
14267
- "main",
14268
- "maintenance",
14269
- "manage",
14270
- "manager",
14271
- "manual",
14272
- "map",
14273
- "maps",
14274
- "marketing",
14275
- "master",
14276
- "me",
14277
- "media",
14278
- "member",
14279
- "members",
14280
- "memories",
14281
- "memory",
14282
- "merchandise",
14283
- "message",
14284
- "messages",
14285
- "messenger",
14286
- "mg",
14287
- "microblog",
14288
- "microblogs",
14289
- "mine",
14290
- "mis",
14291
- "misc",
14292
- "mms",
14293
- "mob",
14294
- "mobile",
14295
- "model",
14296
- "models",
14297
- "money",
14298
- "movie",
14299
- "movies",
14300
- "mp3",
14301
- "mp4",
14302
- "msg",
14303
- "msn",
14304
- "music",
14305
- "mx",
14306
- "my",
14307
- "mymme",
14308
- "mysql",
14309
- "name",
14310
- "named",
14311
- "nan",
14312
- "navi",
14313
- "navigation",
14314
- "net",
14315
- "network",
14316
- "networks",
14317
- "new",
14318
- "news",
14319
- "newsletter",
14320
- "nick",
14321
- "nickname",
14322
- "nil",
14323
- "none",
14324
- "notes",
14325
- "noticias",
14326
- "notification",
14327
- "notifications",
14328
- "notify",
14329
- "ns",
14330
- "ns1",
14331
- "ns2",
14332
- "ns3",
14333
- "ns4",
14334
- "ns5",
14335
- "null",
14336
- "oauth",
14337
- "oauth-clients",
14338
- "oauth_clients",
14339
- "ocsp",
14340
- "offer",
14341
- "offers",
14342
- "official",
14343
- "old",
14344
- "online",
14345
- "openid",
14346
- "operator",
14347
- "option",
14348
- "options",
14349
- "order",
14350
- "orders",
14351
- "org",
14352
- "organization",
14353
- "organizations",
14354
- "other",
14355
- "overview",
14356
- "owner",
14357
- "owners",
14358
- "p0rn",
14359
- "pack",
14360
- "page",
14361
- "pager",
14362
- "pages",
14363
- "paid",
14364
- "panel",
14365
- "partner",
14366
- "partnerpage",
14367
- "partners",
14368
- "password",
14369
- "patch",
14370
- "pay",
14371
- "payment",
14372
- "people",
14373
- "perl",
14374
- "person",
14375
- "phone",
14376
- "photo",
14377
- "photoalbum",
14378
- "photos",
14379
- "php",
14380
- "phpmyadmin",
14381
- "phppgadmin",
14382
- "phpredisadmin",
14383
- "pic",
14384
- "pics",
14385
- "picture",
14386
- "pictures",
14387
- "ping",
14388
- "pixel",
14389
- "places",
14390
- "plan",
14391
- "plans",
14392
- "plugin",
14393
- "plugins",
14394
- "podcasts",
14395
- "policies",
14396
- "policy",
14397
- "pop",
14398
- "pop3",
14399
- "popular",
14400
- "porn",
14401
- "portal",
14402
- "portals",
14403
- "post",
14404
- "postfix",
14405
- "postmaster",
14406
- "posts",
14407
- "pr",
14408
- "pr0n",
14409
- "premium",
14410
- "press",
14411
- "price",
14412
- "pricing",
14413
- "principles",
14414
- "print",
14415
- "privacy",
14416
- "privacy-policy",
14417
- "privacypolicy",
14418
- "privacy_policy",
14419
- "private",
14420
- "prod",
14421
- "product",
14422
- "production",
14423
- "products",
14424
- "profile",
14425
- "profiles",
14426
- "project",
14427
- "projects",
14428
- "promo",
14429
- "promotions",
14430
- "proxies",
14431
- "proxy",
14432
- "pub",
14433
- "public",
14434
- "purchase",
14435
- "purpose",
14436
- "put",
14437
- "python",
14438
- "queries",
14439
- "query",
14440
- "radio",
14441
- "random",
14442
- "ranking",
14443
- "read",
14444
- "reader",
14445
- "readme",
14446
- "recent",
14447
- "recruit",
14448
- "recruitment",
14449
- "redirect",
14450
- "register",
14451
- "registration",
14452
- "release",
14453
- "remove",
14454
- "replies",
14455
- "report",
14456
- "reports",
14457
- "repositories",
14458
- "repository",
14459
- "req",
14460
- "request",
14461
- "requests",
14462
- "research",
14463
- "reset",
14464
- "resolve",
14465
- "resolver",
14466
- "review",
14467
- "rnail",
14468
- "rnicrosoft",
14469
- "roc",
14470
- "root",
14471
- "rss",
14472
- "ruby",
14473
- "rule",
14474
- "sag",
14475
- "sale",
14476
- "sales",
14477
- "sample",
14478
- "samples",
14479
- "sandbox",
14480
- "save",
14481
- "scholar",
14482
- "school",
14483
- "schools",
14484
- "script",
14485
- "scripts",
14486
- "search",
14487
- "secure",
14488
- "security",
14489
- "self",
14490
- "seminars",
14491
- "send",
14492
- "server",
14493
- "server-info",
14494
- "server_info",
14495
- "server-status",
14496
- "server_status",
14497
- "servers",
14498
- "service",
14499
- "services",
14500
- "session",
14501
- "sessions",
14502
- "setting",
14503
- "settings",
14504
- "setup",
14505
- "share",
14506
- "shop",
14507
- "shopping",
14508
- "shortcut",
14509
- "shortcuts",
14510
- "show",
14511
- "sign-in",
14512
- "sign-up",
14513
- "signin",
14514
- "signout",
14515
- "signup",
14516
- "sign_in",
14517
- "sign_up",
14518
- "site",
14519
- "sitemap",
14520
- "sitemaps",
14521
- "sitenews",
14522
- "sites",
14523
- "sketchup",
14524
- "sky",
14525
- "slash",
14526
- "slashinvoice",
14527
- "slut",
14528
- "smartphone",
14529
- "sms",
14530
- "smtp",
14531
- "soap",
14532
- "software",
14533
- "sorry",
14534
- "source",
14535
- "spec",
14536
- "special",
14537
- "spreadsheet",
14538
- "spreadsheets",
14539
- "sql",
14540
- "src",
14541
- "srntp",
14542
- "ssh",
14543
- "ssl",
14544
- "ssladmin",
14545
- "ssladministrator",
14546
- "sslwebmaster",
14547
- "ssytem",
14548
- "staff",
14549
- "stage",
14550
- "staging",
14551
- "start",
14552
- "stat",
14553
- "state",
14554
- "static",
14555
- "statistics",
14556
- "stats",
14557
- "status",
14558
- "store",
14559
- "stores",
14560
- "stories",
14561
- "style",
14562
- "styleguide",
14563
- "styles",
14564
- "stylesheet",
14565
- "stylesheets",
14566
- "subdomain",
14567
- "subscribe",
14568
- "subscription",
14569
- "subscriptions",
14570
- "suggest",
14571
- "suggestqueries",
14572
- "support",
14573
- "survey",
14574
- "surveys",
14575
- "surveytool",
14576
- "svn",
14577
- "swf",
14578
- "syn",
14579
- "sync",
14580
- "syndicated",
14581
- "sys",
14582
- "sysadmin",
14583
- "sysadministrator",
14584
- "sysadmins",
14585
- "system",
14586
- "tablet",
14587
- "tablets",
14588
- "tag",
14589
- "tags",
14590
- "talk",
14591
- "talkgadget",
14592
- "task",
14593
- "tasks",
14594
- "team",
14595
- "teams",
14596
- "tech",
14597
- "telnet",
14598
- "term",
14599
- "terms",
14600
- "terms-of-service",
14601
- "termsofservice",
14602
- "terms_of_service",
14603
- "test",
14604
- "testing",
14605
- "tests",
14606
- "text",
14607
- "theme",
14608
- "themes",
14609
- "thread",
14610
- "threads",
14611
- "ticket",
14612
- "tickets",
14613
- "tmp",
14614
- "todo",
14615
- "to-do",
14616
- "to_do",
14617
- "toml",
14618
- "tool",
14619
- "toolbar",
14620
- "toolbars",
14621
- "tools",
14622
- "top",
14623
- "topic",
14624
- "topics",
14625
- "tos",
14626
- "tour",
14627
- "trac",
14628
- "translate",
14629
- "trace",
14630
- "translation",
14631
- "translations",
14632
- "translator",
14633
- "trends",
14634
- "tutorial",
14635
- "tux",
14636
- "tv",
14637
- "twitter",
14638
- "txt",
14639
- "ul",
14640
- "undef",
14641
- "unfollow",
14642
- "unsubscribe",
14643
- "update",
14644
- "updates",
14645
- "upgrade",
14646
- "upgrades",
14647
- "upi",
14648
- "upload",
14649
- "uploads",
14650
- "url",
14651
- "usage",
14652
- "user",
14653
- "username",
14654
- "usernames",
14655
- "users",
14656
- "uuid",
14657
- "validation",
14658
- "validations",
14659
- "ver",
14660
- "version",
14661
- "video",
14662
- "videos",
14663
- "video-stats",
14664
- "visitor",
14665
- "visitors",
14666
- "voice",
14667
- "volunteer",
14668
- "volunteers",
14669
- "w",
14670
- "watch",
14671
- "wave",
14672
- "weather",
14673
- "web",
14674
- "webdisk",
14675
- "webhook",
14676
- "webhooks",
14677
- "webmail",
14678
- "webmaster",
14679
- "webmasters",
14680
- "webrnail",
14681
- "website",
14682
- "websites",
14683
- "welcome",
14684
- "whm",
14685
- "whois",
14686
- "widget",
14687
- "widgets",
14688
- "wifi",
14689
- "wiki",
14690
- "wikis",
14691
- "win",
14692
- "windows",
14693
- "word",
14694
- "work",
14695
- "works",
14696
- "workshop",
14697
- "wpad",
14698
- "ww",
14699
- "wws",
14700
- "www",
14701
- "wwws",
14702
- "wwww",
14703
- "xfn",
14704
- "xhtml",
14705
- "xhtrnl",
14706
- "xml",
14707
- "xmpp",
14708
- "xpg",
14709
- "xxx",
14710
- "yaml",
14711
- "year",
14712
- "yml",
14713
- "you",
14714
- "yourdomain",
14715
- "yourname",
14716
- "yoursite",
14717
- "yourusername"
14718
- ];
14719
- var famousAccounts = [
14720
- "10ronaldinho",
14721
- "3gerardpique",
14722
- "aclu",
14723
- "adele",
14724
- "akshaykumar",
14725
- "aliaa08",
14726
- "aliciakeys",
14727
- "amitshah",
14728
- "andresiniesta8",
14729
- "anushkasharma",
14730
- "arianagrande",
14731
- "arrahman",
14732
- "arvindkejriwal",
14733
- "avrillavigne",
14734
- "barackobama",
14735
- "bbcbreaking",
14736
- "bbcworld",
14737
- "beingsalmankhan",
14738
- "billgates",
14739
- "britneyspears",
14740
- "brunomars",
14741
- "bts_bighit",
14742
- "bts_twt",
14743
- "championsleague",
14744
- "chrisbrown",
14745
- "cnnbrk",
14746
- "coldplay",
14747
- "conanobrien",
14748
- "cristiano",
14749
- "danieltosh",
14750
- "davidguetta",
14751
- "ddlovato",
14752
- "deepikapadukone",
14753
- "drake",
14754
- "elisapie",
14755
- "ellendegeneres",
14756
- "elonmusk",
14757
- "eminem",
14758
- "emmawatson",
14759
- "fcbarcelona",
14760
- "foxnews",
14761
- "harry_styles",
14762
- "hillaryclinton",
14763
- "iamsrk",
14764
- "ihrithik",
14765
- "imvkohli",
14766
- "instagram",
14767
- "jimmyfallon",
14768
- "jlo",
14769
- "joebiden",
14770
- "jtimberlake",
14771
- "justinbieber",
14772
- "kaka",
14773
- "kanyewest",
14774
- "katyperry",
14775
- "kendalljenner",
14776
- "kevinhart4real",
14777
- "khloekardashian",
14778
- "kimkardashian",
14779
- "kingjames",
14780
- "kourtneykardash",
14781
- "kyliejenner",
14782
- "ladygaga",
14783
- "liampayne",
14784
- "liltunechi",
14785
- "manutd",
14786
- "mariahcarey",
14787
- "mileycyrus",
14788
- "mohamadalarefe",
14789
- "narendramodi",
14790
- "nasa",
14791
- "nba",
14792
- "neymarjr",
14793
- "nfl",
14794
- "niallofficial",
14795
- "nickiminaj",
14796
- "npr",
14797
- "nytimes",
14798
- "onedirection",
14799
- "oprah",
14800
- "pink",
14801
- "pitbull",
14802
- "playstation",
14803
- "pmoindia",
14804
- "premierleague",
14805
- "priyankachopra",
14806
- "realdonaldtrump",
14807
- "ricky_martin",
14808
- "rihanna",
14809
- "sachin_rt",
14810
- "selenagomez",
14811
- "shakira",
14812
- "shawnmendes",
14813
- "sportscenter",
14814
- "srbachchan",
14815
- "subhisharma100",
14816
- "taylorswift13",
14817
- "theeconomist",
14818
- "twitter",
14819
- "virendersehwag",
14820
- "whitehouse45",
14821
- "wizkhalifa",
14822
- "youtube",
14823
- "zaynmalik",
14824
- "beyonce",
14825
- "billieeilish",
14826
- "leomessi",
14827
- "natgeo",
14828
- "nike",
14829
- "snoopdogg",
14830
- "taylorswift",
14831
- "therock",
14832
- "10downingstreet",
14833
- "aoc",
14834
- "carterjwm",
14835
- "dril",
14836
- "gretathunberg",
14837
- "kamalaharris",
14838
- "kremlinrussia_e",
14839
- "potus",
14840
- "rondesantisfl",
14841
- "ukraine",
14842
- "washingtonpost",
14843
- "yousuck2020",
14844
- "zelenskyyua",
14845
- "akiko_lawson",
14846
- "ariyoshihiroiki",
14847
- "asahi",
14848
- "dozle_official",
14849
- "famima_now",
14850
- "ff_xiv_jp",
14851
- "fujitv",
14852
- "gigazine",
14853
- "hajimesyacho",
14854
- "hikakin",
14855
- "jocx",
14856
- "jotx",
14857
- "kiyo_saiore",
14858
- "mainichi",
14859
- "matsu_bouzu",
14860
- "naomiosaka",
14861
- "nhk",
14862
- "nikkei",
14863
- "nintendo",
14864
- "ntv",
14865
- "oowareware1945",
14866
- "pamyurin",
14867
- "poke_times",
14868
- "rolaworld",
14869
- "seikintv",
14870
- "starbucksjapan",
14871
- "tbs",
14872
- "tbs_pr",
14873
- "tvasahi",
14874
- "tvtokyo",
14875
- "yokoono",
14876
- "yomiuri_online",
14877
- "brasildefato",
14878
- "claudialeitte",
14879
- "correio",
14880
- "em_com",
14881
- "estadao",
14882
- "folha",
14883
- "gazetadopovo",
14884
- "ivetesangalo",
14885
- "jairbolsonaro",
14886
- "jornaldobrasil",
14887
- "jornaloglobo",
14888
- "lucianohuck",
14889
- "lulaoficial",
14890
- "marcosmion",
14891
- "paulocoelho",
14892
- "portalr7",
14893
- "rede_globo",
14894
- "zerohora"
14895
- ];
14896
- var reservedSubdomains = [
14897
- ...atpSpecific,
14898
- ...commonlyReserved,
14899
- ...famousAccounts
14900
- ].reduce((acc, cur) => {
14901
- return {
14902
- ...acc,
14903
- [cur]: true
14904
- };
14905
- }, {});
14906
-
14907
- // ../identifier/src/handle.ts
14908
- var ensureValidHandle = (handle2) => {
14909
- if (!/^[a-zA-Z0-9.-]*$/.test(handle2)) {
14910
- throw new InvalidHandleError(
14911
- "Disallowed characters in handle (ASCII letters, digits, dashes, periods only)"
14912
- );
14913
- }
14914
- if (handle2.length > 253) {
14915
- throw new InvalidHandleError("Handle is too long (253 chars max)");
14916
- }
14917
- const labels = handle2.split(".");
14918
- if (labels.length < 2) {
14919
- throw new InvalidHandleError("Handle domain needs at least two parts");
14920
- }
14921
- for (let i = 0; i < labels.length; i++) {
14922
- const l = labels[i];
14923
- if (l.length < 1) {
14924
- throw new InvalidHandleError("Handle parts can not be empty");
14925
- }
14926
- if (l.length > 63) {
14927
- throw new InvalidHandleError("Handle part too long (max 63 chars)");
14928
- }
14929
- if (l.endsWith("-") || l.startsWith("-")) {
14930
- throw new InvalidHandleError(
14931
- "Handle parts can not start or end with hyphens"
14932
- );
14933
- }
14934
- if (i + 1 == labels.length && !/^[a-zA-Z]/.test(l)) {
14935
- throw new InvalidHandleError(
14936
- "Handle final component (TLD) must start with ASCII letter"
14937
- );
14938
- }
14939
- }
14940
- };
14941
- var InvalidHandleError = class extends Error {
14942
- };
14943
-
14944
- // ../identifier/src/did.ts
14945
- var ensureValidDid = (did2) => {
14946
- if (!/^[a-zA-Z0-9._:%-]*$/.test(did2)) {
14947
- throw new InvalidDidError(
14948
- "Disallowed characters in DID (ASCII letters, digits, and a couple other characters only)"
14949
- );
14950
- }
14951
- const parts = did2.split(":");
14952
- if (parts.length < 3) {
14953
- throw new InvalidDidError(
14954
- "DID requires prefix, method, and method-specific content"
14955
- );
14956
- }
14957
- if (parts[0] != "did") {
14958
- throw new InvalidDidError('DID requires "did:" prefix');
14959
- }
14960
- if (!/^[a-z]+$/.test(parts[1])) {
14961
- throw new InvalidDidError("DID method must be lower-case letters");
14962
- }
14963
- if (did2.endsWith(":") || did2.endsWith("%")) {
14964
- throw new InvalidDidError('DID can not end with ":" or "%"');
14965
- }
14966
- if (did2.length > 2 * 1024) {
14967
- throw new InvalidDidError("DID is too long (2048 chars max)");
14968
- }
14969
- };
14970
- var InvalidDidError = class extends Error {
14971
- };
14972
-
14973
- // ../uri/src/validation.ts
14974
- var ensureValidAtUri = (uri2) => {
14975
- const uriParts = uri2.split("#");
14976
- if (uriParts.length > 2) {
14977
- throw new Error('ATURI can have at most one "#", separating fragment out');
14978
- }
14979
- const fragmentPart = uriParts[1] || null;
14980
- uri2 = uriParts[0];
14981
- if (!/^[a-zA-Z0-9._~:@!$&')(*+,;=%/-]*$/.test(uri2)) {
14982
- throw new Error("Disallowed characters in ATURI (ASCII)");
14983
- }
14984
- const parts = uri2.split("/");
14985
- if (parts.length >= 3 && (parts[0] != "at:" || parts[1].length != 0)) {
14986
- throw new Error('ATURI must start with "at://"');
14987
- }
14988
- if (parts.length < 3) {
14989
- throw new Error("ATURI requires at least method and authority sections");
14990
- }
14991
- try {
14992
- ensureValidHandle(parts[2]);
14993
- } catch {
14994
- try {
14995
- ensureValidDid(parts[2]);
14996
- } catch {
14997
- throw new Error("ATURI authority must be a valid handle or DID");
14998
- }
14999
- }
15000
- if (parts.length >= 4) {
15001
- if (parts[3].length == 0) {
15002
- throw new Error(
15003
- "ATURI can not have a slash after authority without a path segment"
15004
- );
15005
- }
15006
- try {
15007
- ensureValidNsid(parts[3]);
15008
- } catch {
15009
- throw new Error(
15010
- "ATURI requires first path segment (if supplied) to be valid NSID"
15011
- );
15012
- }
15013
- }
15014
- if (parts.length >= 5) {
15015
- if (parts[4].length == 0) {
15016
- throw new Error(
15017
- "ATURI can not have a slash after collection, unless record key is provided"
15018
- );
15019
- }
15020
- }
15021
- if (parts.length >= 6) {
15022
- throw new Error(
15023
- "ATURI path can have at most two parts, and no trailing slash"
15024
- );
15025
- }
15026
- if (uriParts.length >= 2 && fragmentPart == null) {
15027
- throw new Error("ATURI fragment must be non-empty and start with slash");
15028
- }
15029
- if (fragmentPart != null) {
15030
- if (fragmentPart.length == 0 || fragmentPart[0] != "/") {
15031
- throw new Error("ATURI fragment must be non-empty and start with slash");
15032
- }
15033
- if (!/^\/[a-zA-Z0-9._~:@!$&')(*+,;=%[\]/-]*$/.test(fragmentPart)) {
15034
- throw new Error("Disallowed characters in ATURI fragment (ASCII)");
15035
- }
15036
- }
15037
- if (uri2.length > 8 * 1024) {
15038
- throw new Error("ATURI is far too long");
15039
- }
15040
- };
15041
-
15042
13995
  // ../lexicon/src/validators/formats.ts
15043
13996
  var import_iso_datestring_validator = __toESM(require_dist());
15044
13997
  function datetime(path, value) {
@@ -16431,7 +15384,12 @@ var ServiceClient = class {
16431
15384
  return new XRPCResponse(res.body, res.headers);
16432
15385
  } else {
16433
15386
  if (res.body && isErrorResponseBody(res.body)) {
16434
- throw new XRPCError(resCode, res.body.error, res.body.message);
15387
+ throw new XRPCError(
15388
+ resCode,
15389
+ res.body.error,
15390
+ res.body.message,
15391
+ res.headers
15392
+ );
16435
15393
  } else {
16436
15394
  throw new XRPCError(resCode);
16437
15395
  }