@keytrace/runner 0.0.3

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 (142) hide show
  1. package/README.md +139 -0
  2. package/dist/actions/css-select.d.ts +6 -0
  3. package/dist/actions/css-select.d.ts.map +1 -0
  4. package/dist/actions/css-select.js +14 -0
  5. package/dist/actions/css-select.js.map +1 -0
  6. package/dist/actions/dns-txt.d.ts +6 -0
  7. package/dist/actions/dns-txt.d.ts.map +1 -0
  8. package/dist/actions/dns-txt.js +17 -0
  9. package/dist/actions/dns-txt.js.map +1 -0
  10. package/dist/actions/http-get.d.ts +6 -0
  11. package/dist/actions/http-get.d.ts.map +1 -0
  12. package/dist/actions/http-get.js +19 -0
  13. package/dist/actions/http-get.js.map +1 -0
  14. package/dist/actions/index.d.ts +6 -0
  15. package/dist/actions/index.d.ts.map +1 -0
  16. package/dist/actions/index.js +6 -0
  17. package/dist/actions/index.js.map +1 -0
  18. package/dist/actions/json-path.d.ts +12 -0
  19. package/dist/actions/json-path.d.ts.map +1 -0
  20. package/dist/actions/json-path.js +26 -0
  21. package/dist/actions/json-path.js.map +1 -0
  22. package/dist/actions/regex-match.d.ts +6 -0
  23. package/dist/actions/regex-match.d.ts.map +1 -0
  24. package/dist/actions/regex-match.js +14 -0
  25. package/dist/actions/regex-match.js.map +1 -0
  26. package/dist/claim.d.ts +38 -0
  27. package/dist/claim.d.ts.map +1 -0
  28. package/dist/claim.js +253 -0
  29. package/dist/claim.js.map +1 -0
  30. package/dist/constants.d.ts +17 -0
  31. package/dist/constants.d.ts.map +1 -0
  32. package/dist/constants.js +17 -0
  33. package/dist/constants.js.map +1 -0
  34. package/dist/expect.d.ts +12 -0
  35. package/dist/expect.d.ts.map +1 -0
  36. package/dist/expect.js +33 -0
  37. package/dist/expect.js.map +1 -0
  38. package/dist/fetchers/activitypub.d.ts +25 -0
  39. package/dist/fetchers/activitypub.d.ts.map +1 -0
  40. package/dist/fetchers/activitypub.js +32 -0
  41. package/dist/fetchers/activitypub.js.map +1 -0
  42. package/dist/fetchers/dns.d.ts +21 -0
  43. package/dist/fetchers/dns.d.ts.map +1 -0
  44. package/dist/fetchers/dns.js +61 -0
  45. package/dist/fetchers/dns.js.map +1 -0
  46. package/dist/fetchers/http.d.ts +10 -0
  47. package/dist/fetchers/http.d.ts.map +1 -0
  48. package/dist/fetchers/http.js +30 -0
  49. package/dist/fetchers/http.js.map +1 -0
  50. package/dist/fetchers/index.d.ts +16 -0
  51. package/dist/fetchers/index.d.ts.map +1 -0
  52. package/dist/fetchers/index.js +22 -0
  53. package/dist/fetchers/index.js.map +1 -0
  54. package/dist/index.d.ts +21 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +26 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/interpolate.d.ts +12 -0
  59. package/dist/interpolate.d.ts.map +1 -0
  60. package/dist/interpolate.js +23 -0
  61. package/dist/interpolate.js.map +1 -0
  62. package/dist/profile.d.ts +42 -0
  63. package/dist/profile.d.ts.map +1 -0
  64. package/dist/profile.js +176 -0
  65. package/dist/profile.js.map +1 -0
  66. package/dist/recipes/dns-txt.d.ts +9 -0
  67. package/dist/recipes/dns-txt.d.ts.map +1 -0
  68. package/dist/recipes/dns-txt.js +45 -0
  69. package/dist/recipes/dns-txt.js.map +1 -0
  70. package/dist/recipes/github-gist.d.ts +9 -0
  71. package/dist/recipes/github-gist.d.ts.map +1 -0
  72. package/dist/recipes/github-gist.js +52 -0
  73. package/dist/recipes/github-gist.js.map +1 -0
  74. package/dist/recipes/index.d.ts +3 -0
  75. package/dist/recipes/index.d.ts.map +1 -0
  76. package/dist/recipes/index.js +3 -0
  77. package/dist/recipes/index.js.map +1 -0
  78. package/dist/runner.d.ts +7 -0
  79. package/dist/runner.d.ts.map +1 -0
  80. package/dist/runner.js +100 -0
  81. package/dist/runner.js.map +1 -0
  82. package/dist/serviceProviders/activitypub.d.ts +10 -0
  83. package/dist/serviceProviders/activitypub.d.ts.map +1 -0
  84. package/dist/serviceProviders/activitypub.js +73 -0
  85. package/dist/serviceProviders/activitypub.js.map +1 -0
  86. package/dist/serviceProviders/bsky.d.ts +10 -0
  87. package/dist/serviceProviders/bsky.d.ts.map +1 -0
  88. package/dist/serviceProviders/bsky.js +63 -0
  89. package/dist/serviceProviders/bsky.js.map +1 -0
  90. package/dist/serviceProviders/dns.d.ts +10 -0
  91. package/dist/serviceProviders/dns.d.ts.map +1 -0
  92. package/dist/serviceProviders/dns.js +65 -0
  93. package/dist/serviceProviders/dns.js.map +1 -0
  94. package/dist/serviceProviders/github.d.ts +10 -0
  95. package/dist/serviceProviders/github.d.ts.map +1 -0
  96. package/dist/serviceProviders/github.js +100 -0
  97. package/dist/serviceProviders/github.js.map +1 -0
  98. package/dist/serviceProviders/index.d.ts +26 -0
  99. package/dist/serviceProviders/index.d.ts.map +1 -0
  100. package/dist/serviceProviders/index.js +55 -0
  101. package/dist/serviceProviders/index.js.map +1 -0
  102. package/dist/serviceProviders/npm.d.ts +10 -0
  103. package/dist/serviceProviders/npm.d.ts.map +1 -0
  104. package/dist/serviceProviders/npm.js +99 -0
  105. package/dist/serviceProviders/npm.js.map +1 -0
  106. package/dist/serviceProviders/types.d.ts +106 -0
  107. package/dist/serviceProviders/types.d.ts.map +1 -0
  108. package/dist/serviceProviders/types.js +2 -0
  109. package/dist/serviceProviders/types.js.map +1 -0
  110. package/dist/types.d.ts +165 -0
  111. package/dist/types.d.ts.map +1 -0
  112. package/dist/types.js +12 -0
  113. package/dist/types.js.map +1 -0
  114. package/package.json +37 -0
  115. package/src/actions/css-select.ts +14 -0
  116. package/src/actions/dns-txt.ts +16 -0
  117. package/src/actions/http-get.ts +19 -0
  118. package/src/actions/index.ts +5 -0
  119. package/src/actions/json-path.ts +29 -0
  120. package/src/actions/regex-match.ts +13 -0
  121. package/src/claim.ts +293 -0
  122. package/src/constants.ts +19 -0
  123. package/src/expect.ts +36 -0
  124. package/src/fetchers/activitypub.ts +53 -0
  125. package/src/fetchers/dns.ts +82 -0
  126. package/src/fetchers/http.ts +38 -0
  127. package/src/fetchers/index.ts +30 -0
  128. package/src/index.ts +57 -0
  129. package/src/interpolate.ts +20 -0
  130. package/src/profile.ts +229 -0
  131. package/src/recipes/dns-txt.ts +46 -0
  132. package/src/recipes/github-gist.ts +53 -0
  133. package/src/recipes/index.ts +2 -0
  134. package/src/runner.ts +116 -0
  135. package/src/serviceProviders/activitypub.ts +84 -0
  136. package/src/serviceProviders/bsky.ts +73 -0
  137. package/src/serviceProviders/dns.ts +75 -0
  138. package/src/serviceProviders/github.ts +112 -0
  139. package/src/serviceProviders/index.ts +65 -0
  140. package/src/serviceProviders/npm.ts +116 -0
  141. package/src/serviceProviders/types.ts +121 -0
  142. package/src/types.ts +181 -0
@@ -0,0 +1,10 @@
1
+ import type { ServiceProvider } from "./types.js";
2
+ /**
3
+ * DNS TXT record service provider
4
+ *
5
+ * Users prove domain ownership by adding a TXT record containing their DID.
6
+ * The claim URI format is: dns:example.com
7
+ */
8
+ declare const dns: ServiceProvider;
9
+ export default dns;
10
+ //# sourceMappingURL=dns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dns.d.ts","sourceRoot":"","sources":["../../src/serviceProviders/dns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;GAKG;AACH,QAAA,MAAM,GAAG,EAAE,eAgEV,CAAC;AAEF,eAAe,GAAG,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * DNS TXT record service provider
3
+ *
4
+ * Users prove domain ownership by adding a TXT record containing their DID.
5
+ * The claim URI format is: dns:example.com
6
+ */
7
+ const dns = {
8
+ id: "dns",
9
+ name: "Domain",
10
+ homepage: "",
11
+ // Match dns:domain.tld URIs (must contain at least one dot)
12
+ reUri: /^dns:([a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)+)$/,
13
+ isAmbiguous: false,
14
+ ui: {
15
+ description: "Link via DNS TXT record",
16
+ icon: "globe",
17
+ inputLabel: "Domain",
18
+ inputPlaceholder: "example.com",
19
+ instructions: [
20
+ "Open your domain's DNS settings (usually in your registrar or hosting provider)",
21
+ "Add a new **TXT record** at the root domain (or at `_keytrace.yourdomain.com`)",
22
+ "Set the record value to the verification content below",
23
+ "Save and wait for DNS propagation (may take a few minutes to an hour)",
24
+ "Enter your domain below and verify",
25
+ ],
26
+ proofTemplate: "keytrace-verification={did}",
27
+ },
28
+ processURI(uri, match) {
29
+ const [, domain] = match;
30
+ return {
31
+ profile: {
32
+ display: domain,
33
+ uri: `https://${domain}`,
34
+ },
35
+ proof: {
36
+ request: {
37
+ uri: domain,
38
+ fetcher: "dns",
39
+ format: "json",
40
+ },
41
+ target: [
42
+ // Look for DID in any TXT record
43
+ { path: ["records", "txt"], relation: "contains", format: "text" },
44
+ ],
45
+ },
46
+ };
47
+ },
48
+ getProofText(did) {
49
+ return `keytrace-verification=${did}`;
50
+ },
51
+ getProofLocation(match) {
52
+ const [, domain] = match;
53
+ return `Add a TXT record at the root of ${domain} (or at _keytrace.${domain})`;
54
+ },
55
+ tests: [
56
+ { uri: "dns:example.com", shouldMatch: true },
57
+ { uri: "dns:sub.example.com", shouldMatch: true },
58
+ { uri: "dns:a.b.c.example.com", shouldMatch: true },
59
+ { uri: "dns:example", shouldMatch: false },
60
+ { uri: "dns:-invalid.com", shouldMatch: false },
61
+ { uri: "https://example.com", shouldMatch: false },
62
+ ],
63
+ };
64
+ export default dns;
65
+ //# sourceMappingURL=dns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dns.js","sourceRoot":"","sources":["../../src/serviceProviders/dns.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,GAAG,GAAoB;IAC3B,EAAE,EAAE,KAAK;IACT,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,EAAE;IAEZ,4DAA4D;IAC5D,KAAK,EAAE,iGAAiG;IAExG,WAAW,EAAE,KAAK;IAElB,EAAE,EAAE;QACF,WAAW,EAAE,yBAAyB;QACtC,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,QAAQ;QACpB,gBAAgB,EAAE,aAAa;QAC/B,YAAY,EAAE;YACZ,iFAAiF;YACjF,gFAAgF;YAChF,wDAAwD;YACxD,uEAAuE;YACvE,oCAAoC;SACrC;QACD,aAAa,EAAE,6BAA6B;KAC7C;IAED,UAAU,CAAC,GAAG,EAAE,KAAK;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;QAEzB,OAAO;YACL,OAAO,EAAE;gBACP,OAAO,EAAE,MAAM;gBACf,GAAG,EAAE,WAAW,MAAM,EAAE;aACzB;YACD,KAAK,EAAE;gBACL,OAAO,EAAE;oBACP,GAAG,EAAE,MAAM;oBACX,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,MAAM;iBACf;gBACD,MAAM,EAAE;oBACN,iCAAiC;oBACjC,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE;iBACnE;aACF;SACF,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,GAAG;QACd,OAAO,yBAAyB,GAAG,EAAE,CAAC;IACxC,CAAC;IAED,gBAAgB,CAAC,KAAK;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;QACzB,OAAO,mCAAmC,MAAM,qBAAqB,MAAM,GAAG,CAAC;IACjF,CAAC;IAED,KAAK,EAAE;QACL,EAAE,GAAG,EAAE,iBAAiB,EAAE,WAAW,EAAE,IAAI,EAAE;QAC7C,EAAE,GAAG,EAAE,qBAAqB,EAAE,WAAW,EAAE,IAAI,EAAE;QACjD,EAAE,GAAG,EAAE,uBAAuB,EAAE,WAAW,EAAE,IAAI,EAAE;QACnD,EAAE,GAAG,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,EAAE;QAC1C,EAAE,GAAG,EAAE,kBAAkB,EAAE,WAAW,EAAE,KAAK,EAAE;QAC/C,EAAE,GAAG,EAAE,qBAAqB,EAAE,WAAW,EAAE,KAAK,EAAE;KACnD;CACF,CAAC;AAEF,eAAe,GAAG,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ServiceProvider } from "./types.js";
2
+ /**
3
+ * GitHub Gist service provider
4
+ *
5
+ * Users prove ownership by creating a public gist containing their DID.
6
+ * The gist URL is used as the claim URI.
7
+ */
8
+ declare const github: ServiceProvider;
9
+ export default github;
10
+ //# sourceMappingURL=github.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/serviceProviders/github.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;GAKG;AACH,QAAA,MAAM,MAAM,EAAE,eAqGb,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * GitHub Gist service provider
3
+ *
4
+ * Users prove ownership by creating a public gist containing their DID.
5
+ * The gist URL is used as the claim URI.
6
+ */
7
+ const github = {
8
+ id: "github",
9
+ name: "GitHub",
10
+ homepage: "https://github.com",
11
+ // Match GitHub Gist URLs: https://gist.github.com/username/gistid
12
+ reUri: /^https:\/\/gist\.github\.com\/([^/]+)\/([a-f0-9]+)\/?$/,
13
+ isAmbiguous: false,
14
+ ui: {
15
+ description: "Link via a public gist",
16
+ icon: "github",
17
+ inputLabel: "Gist URL",
18
+ inputPlaceholder: "https://gist.github.com/username/abc123...",
19
+ instructions: [
20
+ "Go to [gist.github.com](https://gist.github.com) and create a new gist",
21
+ "Name the file `keytrace.json` (or `keytrace.md` or `proof.md`)",
22
+ "Paste the verification content below into the file",
23
+ "Make sure the gist is **public**, then save it",
24
+ "Copy the gist URL and paste it below",
25
+ ],
26
+ proofTemplate: '{\n "did": "{did}"\n}',
27
+ },
28
+ processURI(uri, match) {
29
+ const [, username, gistId] = match;
30
+ return {
31
+ profile: {
32
+ display: `@${username}`,
33
+ uri: `https://github.com/${username}`,
34
+ },
35
+ proof: {
36
+ request: {
37
+ uri: `https://api.github.com/gists/${gistId}`,
38
+ fetcher: "http",
39
+ format: "json",
40
+ options: {
41
+ headers: {
42
+ Accept: "application/vnd.github.v3+json",
43
+ },
44
+ },
45
+ },
46
+ target: [
47
+ // Check keytrace.json file content
48
+ {
49
+ path: ["files", "keytrace.json", "content"],
50
+ relation: "contains",
51
+ format: "text",
52
+ },
53
+ // Check proof.md file content
54
+ {
55
+ path: ["files", "proof.md", "content"],
56
+ relation: "contains",
57
+ format: "text",
58
+ },
59
+ // Check keytrace.md file content
60
+ {
61
+ path: ["files", "keytrace.md", "content"],
62
+ relation: "contains",
63
+ format: "text",
64
+ },
65
+ // Check openpgp.md for backwards compatibility with Keyoxide
66
+ {
67
+ path: ["files", "openpgp.md", "content"],
68
+ relation: "contains",
69
+ format: "text",
70
+ },
71
+ // Check gist description
72
+ { path: ["description"], relation: "contains", format: "text" },
73
+ ],
74
+ },
75
+ };
76
+ },
77
+ postprocess(data, match) {
78
+ const [, username] = match;
79
+ const gist = data;
80
+ return {
81
+ subject: gist.owner?.login ?? username,
82
+ avatarUrl: gist.owner?.avatar_url,
83
+ profileUrl: `https://github.com/${gist.owner?.login ?? username}`,
84
+ };
85
+ },
86
+ getProofText(did) {
87
+ return `Verifying my identity on keytrace: ${did}`;
88
+ },
89
+ getProofLocation() {
90
+ return `Create a public gist with a file named keytrace.json, keytrace.md, or proof.md containing the proof text`;
91
+ },
92
+ tests: [
93
+ { uri: "https://gist.github.com/alice/abc123def456", shouldMatch: true },
94
+ { uri: "https://gist.github.com/alice/abc123def456/", shouldMatch: true },
95
+ { uri: "https://github.com/alice", shouldMatch: false },
96
+ { uri: "https://gist.gitlab.com/alice/abc123", shouldMatch: false },
97
+ ],
98
+ };
99
+ export default github;
100
+ //# sourceMappingURL=github.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/serviceProviders/github.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import github from "./github.js";
2
+ import dns from "./dns.js";
3
+ import activitypub from "./activitypub.js";
4
+ import bsky from "./bsky.js";
5
+ import npm from "./npm.js";
6
+ import type { ServiceProvider, ServiceProviderMatch } from "./types.js";
7
+ export type { ServiceProvider, ServiceProviderMatch, ServiceProviderUI, ProofTarget, ProofRequest, ProcessedURI } from "./types.js";
8
+ /**
9
+ * Get a service provider by ID
10
+ */
11
+ export declare function getProvider(id: string): ServiceProvider | undefined;
12
+ /**
13
+ * Get all registered service providers
14
+ */
15
+ export declare function getAllProviders(): ServiceProvider[];
16
+ /**
17
+ * Match a URI against all service providers
18
+ * Returns all matching providers, with unambiguous matches stopping the search
19
+ */
20
+ export declare function matchUri(uri: string): ServiceProviderMatch[];
21
+ /**
22
+ * Get the proof text a user should add to verify a claim
23
+ */
24
+ export declare function getProofTextForProvider(providerId: string, did: string, handle?: string): string | undefined;
25
+ export { github, dns, activitypub, bsky, npm };
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/serviceProviders/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAExE,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAUpI;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAEnE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,eAAe,EAAE,CAEnD;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAmB5D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG5G;AAED,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC"}
@@ -0,0 +1,55 @@
1
+ import github from "./github.js";
2
+ import dns from "./dns.js";
3
+ import activitypub from "./activitypub.js";
4
+ import bsky from "./bsky.js";
5
+ import npm from "./npm.js";
6
+ const providers = {
7
+ github,
8
+ dns,
9
+ activitypub,
10
+ bsky,
11
+ npm,
12
+ };
13
+ /**
14
+ * Get a service provider by ID
15
+ */
16
+ export function getProvider(id) {
17
+ return providers[id];
18
+ }
19
+ /**
20
+ * Get all registered service providers
21
+ */
22
+ export function getAllProviders() {
23
+ return Object.values(providers);
24
+ }
25
+ /**
26
+ * Match a URI against all service providers
27
+ * Returns all matching providers, with unambiguous matches stopping the search
28
+ */
29
+ export function matchUri(uri) {
30
+ const matches = [];
31
+ for (const provider of Object.values(providers)) {
32
+ const match = uri.match(provider.reUri);
33
+ if (match) {
34
+ matches.push({
35
+ provider,
36
+ match,
37
+ isAmbiguous: provider.isAmbiguous ?? false,
38
+ });
39
+ // Stop on unambiguous match
40
+ if (!provider.isAmbiguous) {
41
+ break;
42
+ }
43
+ }
44
+ }
45
+ return matches;
46
+ }
47
+ /**
48
+ * Get the proof text a user should add to verify a claim
49
+ */
50
+ export function getProofTextForProvider(providerId, did, handle) {
51
+ const provider = providers[providerId];
52
+ return provider?.getProofText(did, handle);
53
+ }
54
+ export { github, dns, activitypub, bsky, npm };
55
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/serviceProviders/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,GAAG,MAAM,UAAU,CAAC;AAK3B,MAAM,SAAS,GAAoC;IACjD,MAAM;IACN,GAAG;IACH,WAAW;IACX,IAAI;IACJ,GAAG;CACJ,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,EAAU;IACpC,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ;gBACR,KAAK;gBACL,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,KAAK;aAC3C,CAAC,CAAC;YACH,4BAA4B;YAC5B,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAC1B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAAkB,EAAE,GAAW,EAAE,MAAe;IACtF,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IACvC,OAAO,QAAQ,EAAE,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ServiceProvider } from "./types.js";
2
+ /**
3
+ * npm service provider
4
+ *
5
+ * Users prove ownership by publishing an npm package named keytrace-[handle]
6
+ * containing their DID in the package.json keytrace field.
7
+ */
8
+ declare const npm: ServiceProvider;
9
+ export default npm;
10
+ //# sourceMappingURL=npm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm.d.ts","sourceRoot":"","sources":["../../src/serviceProviders/npm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAWlD;;;;;GAKG;AACH,QAAA,MAAM,GAAG,EAAE,eAgGV,CAAC;AAEF,eAAe,GAAG,CAAC"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Slugify a handle for use in npm package names.
3
+ * Replaces dots with dashes since npm doesn't allow dots.
4
+ * e.g. "orta.io" -> "orta-io"
5
+ */
6
+ function slugifyHandle(handle) {
7
+ return handle.replace(/\./g, "-").toLowerCase();
8
+ }
9
+ /**
10
+ * npm service provider
11
+ *
12
+ * Users prove ownership by publishing an npm package named keytrace-[handle]
13
+ * containing their DID in the package.json keytrace field.
14
+ */
15
+ const npm = {
16
+ id: "npm",
17
+ name: "npm",
18
+ homepage: "https://www.npmjs.com",
19
+ // Match npm package URLs: https://www.npmjs.com/package/keytrace-username
20
+ reUri: /^https:\/\/(?:www\.)?npmjs\.com\/package\/(keytrace-[a-z0-9_-]+)\/?$/i,
21
+ isAmbiguous: false,
22
+ ui: {
23
+ description: "Link via an npm package",
24
+ icon: "npm",
25
+ inputLabel: "npm Package URL",
26
+ inputPlaceholder: "https://www.npmjs.com/package/keytrace-yourhandle",
27
+ inputDefaultTemplate: "https://www.npmjs.com/package/keytrace-{slugHandle}",
28
+ instructions: [
29
+ "Create a new folder with a `package.json` containing the verification content below",
30
+ "Run `npm publish --access public` to publish",
31
+ "Paste the npm package URL below",
32
+ ],
33
+ proofTemplate: `{
34
+ "name": "keytrace-{slugHandle}",
35
+ "version": "0.0.1",
36
+ "keytrace": "{claimId}",
37
+ "did": "{did}"
38
+ }`,
39
+ },
40
+ processURI(uri, match) {
41
+ const [, packageName] = match;
42
+ // Extract the handle from keytrace-handle
43
+ const handle = packageName.replace(/^keytrace-/i, "");
44
+ return {
45
+ profile: {
46
+ display: `~${handle}`,
47
+ uri: `https://www.npmjs.com/~${handle}`,
48
+ },
49
+ proof: {
50
+ request: {
51
+ // Use npm registry to get the packument with full metadata
52
+ uri: `https://registry.npmjs.org/${packageName}`,
53
+ fetcher: "http",
54
+ format: "json",
55
+ },
56
+ target: [
57
+ // Check for DID in the did field of any version
58
+ // The packument has versions as an object: { versions: { "0.0.1": { did: "did:...", keytrace: "..." } } }
59
+ {
60
+ path: ["versions", "*", "did"],
61
+ relation: "contains",
62
+ format: "text",
63
+ },
64
+ ],
65
+ },
66
+ };
67
+ },
68
+ postprocess(data, _match) {
69
+ const packument = data;
70
+ // Get the first maintainer's npm username
71
+ const maintainer = packument.maintainers?.[0];
72
+ const npmUsername = maintainer?.name;
73
+ return {
74
+ subject: npmUsername,
75
+ profileUrl: npmUsername ? `https://www.npmjs.com/~${npmUsername}` : undefined,
76
+ };
77
+ },
78
+ getProofText(did, handle) {
79
+ const slug = handle ? slugifyHandle(handle) : "[your-handle]";
80
+ return `{
81
+ "name": "keytrace-${slug}",
82
+ "version": "0.0.1",
83
+ "keytrace": "[claim-id]",
84
+ "did": "${did}"
85
+ }`;
86
+ },
87
+ getProofLocation() {
88
+ return `Publish an npm package named keytrace-[your-handle] with your DID in the keytrace field of package.json`;
89
+ },
90
+ tests: [
91
+ { uri: "https://www.npmjs.com/package/keytrace-alice", shouldMatch: true },
92
+ { uri: "https://npmjs.com/package/keytrace-alice", shouldMatch: true },
93
+ { uri: "https://www.npmjs.com/package/keytrace-alice/", shouldMatch: true },
94
+ { uri: "https://www.npmjs.com/package/some-other-pkg", shouldMatch: false },
95
+ { uri: "https://www.npmjs.com/~alice", shouldMatch: false },
96
+ ],
97
+ };
98
+ export default npm;
99
+ //# sourceMappingURL=npm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm.js","sourceRoot":"","sources":["../../src/serviceProviders/npm.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,SAAS,aAAa,CAAC,MAAc;IACnC,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,GAAG,GAAoB;IAC3B,EAAE,EAAE,KAAK;IACT,IAAI,EAAE,KAAK;IACX,QAAQ,EAAE,uBAAuB;IAEjC,0EAA0E;IAC1E,KAAK,EAAE,uEAAuE;IAE9E,WAAW,EAAE,KAAK;IAElB,EAAE,EAAE;QACF,WAAW,EAAE,yBAAyB;QACtC,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,iBAAiB;QAC7B,gBAAgB,EAAE,mDAAmD;QACrE,oBAAoB,EAAE,qDAAqD;QAC3E,YAAY,EAAE;YACZ,qFAAqF;YACrF,8CAA8C;YAC9C,iCAAiC;SAClC;QACD,aAAa,EAAE;;;;;EAKjB;KACC;IAED,UAAU,CAAC,GAAG,EAAE,KAAK;QACnB,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC;QAC9B,0CAA0C;QAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAEtD,OAAO;YACL,OAAO,EAAE;gBACP,OAAO,EAAE,IAAI,MAAM,EAAE;gBACrB,GAAG,EAAE,0BAA0B,MAAM,EAAE;aACxC;YACD,KAAK,EAAE;gBACL,OAAO,EAAE;oBACP,2DAA2D;oBAC3D,GAAG,EAAE,8BAA8B,WAAW,EAAE;oBAChD,OAAO,EAAE,MAAM;oBACf,MAAM,EAAE,MAAM;iBACf;gBACD,MAAM,EAAE;oBACN,gDAAgD;oBAChD,0GAA0G;oBAC1G;wBACE,IAAI,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC;wBAC9B,QAAQ,EAAE,UAAU;wBACpB,MAAM,EAAE,MAAM;qBACf;iBACF;aACF;SACF,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,IAAI,EAAE,MAAM;QACtB,MAAM,SAAS,GAAG,IAGjB,CAAC;QAEF,0CAA0C;QAC1C,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,UAAU,EAAE,IAAI,CAAC;QAErC,OAAO;YACL,OAAO,EAAE,WAAW;YACpB,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,0BAA0B,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;SAC9E,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,GAAG,EAAE,MAAM;QACtB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;QAC9D,OAAO;sBACW,IAAI;;;YAGd,GAAG;EACb,CAAC;IACD,CAAC;IAED,gBAAgB;QACd,OAAO,yGAAyG,CAAC;IACnH,CAAC;IAED,KAAK,EAAE;QACL,EAAE,GAAG,EAAE,8CAA8C,EAAE,WAAW,EAAE,IAAI,EAAE;QAC1E,EAAE,GAAG,EAAE,0CAA0C,EAAE,WAAW,EAAE,IAAI,EAAE;QACtE,EAAE,GAAG,EAAE,+CAA+C,EAAE,WAAW,EAAE,IAAI,EAAE;QAC3E,EAAE,GAAG,EAAE,8CAA8C,EAAE,WAAW,EAAE,KAAK,EAAE;QAC3E,EAAE,GAAG,EAAE,8BAA8B,EAAE,WAAW,EAAE,KAAK,EAAE;KAC5D;CACF,CAAC;AAEF,eAAe,GAAG,CAAC"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * A match between a URI and a service provider
3
+ */
4
+ export interface ServiceProviderMatch {
5
+ provider: ServiceProvider;
6
+ match: RegExpMatchArray;
7
+ isAmbiguous: boolean;
8
+ }
9
+ /**
10
+ * Where to look for proof in the fetched response
11
+ */
12
+ export interface ProofTarget {
13
+ /** JSON path to search for proof (e.g., ['description'], ['files', '*', 'content']) */
14
+ path: string[];
15
+ /** How to match: 'contains', 'equals', 'startsWith' */
16
+ relation: "contains" | "equals" | "startsWith";
17
+ /** Format of data at path */
18
+ format: "text" | "uri" | "json";
19
+ }
20
+ /**
21
+ * How to fetch the proof
22
+ */
23
+ export interface ProofRequest {
24
+ /** URL template with {placeholders} */
25
+ uri: string;
26
+ /** Fetcher to use: 'http', 'dns', 'activitypub' */
27
+ fetcher: string;
28
+ /** Expected response format */
29
+ format: "json" | "text";
30
+ /** Additional fetch options */
31
+ options?: {
32
+ headers?: Record<string, string>;
33
+ };
34
+ }
35
+ /**
36
+ * Result of processing a URI
37
+ */
38
+ export interface ProcessedURI {
39
+ /** Profile display info */
40
+ profile: {
41
+ /** Display name for the identity (e.g., username, domain) */
42
+ display: string;
43
+ /** URL to the identity's profile page */
44
+ uri: string;
45
+ };
46
+ /** How to fetch and verify the proof */
47
+ proof: {
48
+ request: ProofRequest;
49
+ target: ProofTarget[];
50
+ };
51
+ }
52
+ /**
53
+ * UI configuration for the add claim wizard
54
+ */
55
+ export interface ServiceProviderUI {
56
+ /** Short description for service picker (e.g., "Link via a public gist") */
57
+ description: string;
58
+ /** Lucide icon name (e.g., "github", "globe") */
59
+ icon: string;
60
+ /** Label for the claim URI input field */
61
+ inputLabel: string;
62
+ /** Placeholder text for the claim URI input */
63
+ inputPlaceholder: string;
64
+ /** Default value template for input. Supports {did}, {handle}, {slugHandle} placeholders */
65
+ inputDefaultTemplate?: string;
66
+ /** Step-by-step instructions (markdown supported) */
67
+ instructions: string[];
68
+ /** Template for proof content. Supports {did} and {handle} placeholders */
69
+ proofTemplate: string;
70
+ }
71
+ /**
72
+ * A service provider that can verify identity claims
73
+ */
74
+ export interface ServiceProvider {
75
+ /** Unique identifier */
76
+ id: string;
77
+ /** Display name */
78
+ name: string;
79
+ /** Homepage URL */
80
+ homepage: string;
81
+ /** Regex to match claim URIs */
82
+ reUri: RegExp;
83
+ /** Whether matches are potentially ambiguous (could match multiple providers) */
84
+ isAmbiguous?: boolean;
85
+ /** UI configuration for the add claim wizard */
86
+ ui: ServiceProviderUI;
87
+ /** Process matched URI into verification config */
88
+ processURI(uri: string, match: RegExpMatchArray): ProcessedURI;
89
+ /** Optional post-processing after fetch to extract identity metadata */
90
+ postprocess?(data: unknown, match: RegExpMatchArray): {
91
+ subject?: string;
92
+ avatarUrl?: string;
93
+ profileUrl?: string;
94
+ displayName?: string;
95
+ };
96
+ /** Generate proof text for user to add to their profile */
97
+ getProofText(did: string, handle?: string): string;
98
+ /** Human-readable instructions for where to place the proof */
99
+ getProofLocation?(match: RegExpMatchArray): string;
100
+ /** Test cases for validation */
101
+ tests: {
102
+ uri: string;
103
+ shouldMatch: boolean;
104
+ }[];
105
+ }
106
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/serviceProviders/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,gBAAgB,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,uFAAuF;IACvF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,uDAAuD;IACvD,QAAQ,EAAE,UAAU,GAAG,QAAQ,GAAG,YAAY,CAAC;IAC/C,6BAA6B;IAC7B,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,+BAA+B;IAC/B,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,2BAA2B;IAC3B,OAAO,EAAE;QACP,6DAA6D;QAC7D,OAAO,EAAE,MAAM,CAAC;QAChB,yCAAyC;QACzC,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,wCAAwC;IACxC,KAAK,EAAE;QACL,OAAO,EAAE,YAAY,CAAC;QACtB,MAAM,EAAE,WAAW,EAAE,CAAC;KACvB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,4FAA4F;IAC5F,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qDAAqD;IACrD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,2EAA2E;IAC3E,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,QAAQ,EAAE,MAAM,CAAC;IAEjB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IAEd,iFAAiF;IACjF,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,gDAAgD;IAChD,EAAE,EAAE,iBAAiB,CAAC;IAEtB,mDAAmD;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,YAAY,CAAC;IAE/D,wEAAwE;IACxE,WAAW,CAAC,CACV,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,gBAAgB,GACtB;QACD,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IAEF,2DAA2D;IAC3D,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEnD,+DAA+D;IAC/D,gBAAgB,CAAC,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAEnD,gCAAgC;IAChC,KAAK,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,WAAW,EAAE,OAAO,CAAC;KACtB,EAAE,CAAC;CACL"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/serviceProviders/types.ts"],"names":[],"mappings":""}