forked from Mirrors/doipjs
Compare commits
No commits in common. "dev" and "main" have entirely different histories.
17 changed files with 4921 additions and 8016 deletions
Binary file not shown.
|
@ -1,6 +0,0 @@
|
|||
nodeLinker: node-modules
|
||||
npmScopes:
|
||||
myriation:
|
||||
npmPublishRegistry: https://git.myriation.xyz/api/packages/myriation/npm/
|
||||
npmAlwaysAuth: true
|
||||
npmAuthToken: REPLACE-ME
|
643
dist/doip.core.js
vendored
643
dist/doip.core.js
vendored
File diff suppressed because it is too large
Load diff
4
dist/doip.core.min.js
vendored
4
dist/doip.core.min.js
vendored
File diff suppressed because one or more lines are too long
660
dist/doip.fetchers.js
vendored
660
dist/doip.fetchers.js
vendored
File diff suppressed because it is too large
Load diff
6
dist/doip.fetchers.min.js
vendored
6
dist/doip.fetchers.min.js
vendored
File diff suppressed because one or more lines are too long
660
dist/doip.fetchers.minimal.js
vendored
660
dist/doip.fetchers.minimal.js
vendored
File diff suppressed because it is too large
Load diff
6
dist/doip.fetchers.minimal.min.js
vendored
6
dist/doip.fetchers.minimal.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@myriation/doipjs",
|
||||
"version": "1.2.9+myriaiton.1",
|
||||
"name": "doipjs",
|
||||
"version": "1.2.9",
|
||||
"description": "Decentralized Online Identity Proofs library in Node.js",
|
||||
"type": "module",
|
||||
"main": "./src/index.js",
|
||||
|
@ -15,7 +15,7 @@
|
|||
"default": "./src/fetcher/index.minimal.js"
|
||||
}
|
||||
},
|
||||
"packageManager": "yarn@4.3.0",
|
||||
"packageManager": "yarn@1.22.19",
|
||||
"dependencies": {
|
||||
"@openpgp/hkp-client": "^0.0.3",
|
||||
"@openpgp/wkd-client": "^0.0.4",
|
||||
|
@ -73,7 +73,7 @@
|
|||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://git.myriation.org/myriation/doipjs"
|
||||
"url": "https://codeberg.org/keyoxide/doipjs"
|
||||
},
|
||||
"homepage": "https://js.doip.rocks",
|
||||
"keywords": [
|
||||
|
|
|
@ -22,4 +22,4 @@ limitations under the License.
|
|||
* doip.js library version
|
||||
* @constant {string}
|
||||
*/
|
||||
export const version = '1.2.9+myriaiton.1'
|
||||
export const version = '1.2.9'
|
||||
|
|
|
@ -35,8 +35,7 @@ export const opts = {
|
|||
privateKey: null
|
||||
},
|
||||
irc: {
|
||||
nick: null,
|
||||
sasl: []
|
||||
nick: null
|
||||
},
|
||||
matrix: {
|
||||
instance: null,
|
||||
|
|
|
@ -59,25 +59,12 @@ export async function fn (data, opts) {
|
|||
}
|
||||
|
||||
try {
|
||||
// Add sasl-related config if the server matches
|
||||
const matchedSaslConfig = opts.claims.irc.sasl.find(saslConfig => data.domain.match(new RegExp(saslConfig.domainRegex)) !== null)
|
||||
const saslOptions = matchedSaslConfig
|
||||
? {
|
||||
sasl: true,
|
||||
userName: matchedSaslConfig.username,
|
||||
password: matchedSaslConfig.password
|
||||
}
|
||||
: {
|
||||
sasl: false
|
||||
}
|
||||
|
||||
const client = new irc.Client(data.domain, opts.claims.irc.nick, {
|
||||
port: 6697,
|
||||
secure: true,
|
||||
channels: [],
|
||||
showErrors: false,
|
||||
debug: false,
|
||||
...saslOptions
|
||||
debug: false
|
||||
})
|
||||
const reKey = /[a-zA-Z0-9\-_]+\s+:\s((?:openpgp4fpr|aspe):.*)/
|
||||
const reEnd = /End\sof\s.*\staxonomy./
|
||||
|
|
|
@ -1,127 +0,0 @@
|
|||
/*
|
||||
Copyright 2024 Bram Hagens
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
/**
|
||||
* Discord service provider
|
||||
* @module serviceProviders/discord
|
||||
* @example
|
||||
* import { ServiceProviderDefinitions } from 'doipjs';
|
||||
* const sp = ServiceProviderDefinitions.data.discord.processURI('https://discord.com/invite/AbCdEf');
|
||||
*/
|
||||
|
||||
import * as E from '../enums.js'
|
||||
import { ServiceProvider } from '../serviceProvider.js'
|
||||
|
||||
export const reURI = /^https:\/\/(?:discord\.gg|discord\.com\/invite)\/(.+)/
|
||||
|
||||
/**
|
||||
* @function
|
||||
* @param {string} uri - Claim URI to process
|
||||
* @returns {ServiceProvider} The service provider information based on the claim URI
|
||||
*/
|
||||
export function processURI (uri) {
|
||||
const match = uri.match(reURI)
|
||||
|
||||
return new ServiceProvider({
|
||||
about: {
|
||||
id: 'discord',
|
||||
name: 'Discord',
|
||||
homepage: 'https://discord.com'
|
||||
},
|
||||
profile: {
|
||||
display: null,
|
||||
uri: null,
|
||||
qr: null
|
||||
},
|
||||
claim: {
|
||||
uriRegularExpression: reURI.toString(),
|
||||
uriIsAmbiguous: false
|
||||
},
|
||||
// Get proof from invites (https://discord.com/developers/docs/resources/invite#get-invite)
|
||||
// See https://discord.com/developers/docs/reference#api-versioning for Discord's API versioning
|
||||
proof: {
|
||||
request: {
|
||||
uri: `https://discord.com/api/v10/invites/${match[1]}`,
|
||||
fetcher: E.Fetcher.HTTP,
|
||||
accessRestriction: E.ProofAccessRestriction.NOCORS,
|
||||
data: {
|
||||
url: `https://discord.com/api/v10/invites/${match[1]}`,
|
||||
format: E.ProofFormat.JSON
|
||||
}
|
||||
},
|
||||
response: {
|
||||
format: E.ProofFormat.JSON
|
||||
},
|
||||
target: [
|
||||
{
|
||||
format: E.ClaimFormat.URI,
|
||||
encoding: E.EntityEncodingFormat.PLAIN,
|
||||
relation: E.ClaimRelation.CONTAINS,
|
||||
path: ['guild', 'description']
|
||||
},
|
||||
{
|
||||
format: E.ClaimFormat.URI,
|
||||
encoding: E.EntityEncodingFormat.PLAIN,
|
||||
relation: E.ClaimRelation.CONTAINS,
|
||||
path: ['guild', 'name']
|
||||
}
|
||||
]
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export const functions = {
|
||||
postprocess: async (claimData, proofData, opts) => {
|
||||
// Extract inviter's username from https://discord.com/developers/docs/resources/invite#invite-object
|
||||
claimData.profile.display = proofData.result.inviter.username
|
||||
|
||||
return { claimData, proofData }
|
||||
}
|
||||
}
|
||||
|
||||
export const tests = [
|
||||
{
|
||||
uri: 'https://discord.com/invite/AbCdEf',
|
||||
shouldMatch: true
|
||||
},
|
||||
{
|
||||
uri: 'https://discord.com/invite/AbCdEfGh',
|
||||
shouldMatch: true
|
||||
},
|
||||
{
|
||||
uri: 'https://discord.gg/AbCdEf',
|
||||
shouldMatch: true
|
||||
},
|
||||
{
|
||||
uri: 'https://discord.gg/AbCdEfGh',
|
||||
shouldMatch: true
|
||||
},
|
||||
{
|
||||
uri: 'https://domain.com/invite/AbCdEf',
|
||||
shouldMatch: false
|
||||
},
|
||||
{
|
||||
uri: 'https://domain.gg/AbCdEf',
|
||||
shouldMatch: false
|
||||
},
|
||||
{
|
||||
uri: 'https://discord.com/invite/',
|
||||
shouldMatch: false
|
||||
},
|
||||
{
|
||||
uri: 'https://discord.gg/',
|
||||
shouldMatch: false
|
||||
}
|
||||
]
|
|
@ -38,8 +38,6 @@ import * as stackexchange from './stackexchange.js'
|
|||
import * as keybase from './keybase.js'
|
||||
import * as opencollective from './opencollective.js'
|
||||
import * as orcid from './orcid.js'
|
||||
import * as pronounscc from './pronounscc.js'
|
||||
import * as discord from './discord.js'
|
||||
|
||||
const _data = {
|
||||
aspe,
|
||||
|
@ -66,9 +64,7 @@ const _data = {
|
|||
stackexchange,
|
||||
keybase,
|
||||
opencollective,
|
||||
orcid,
|
||||
pronounscc,
|
||||
discord
|
||||
orcid
|
||||
}
|
||||
|
||||
export const list = Object.keys(_data)
|
||||
|
|
|
@ -1,100 +0,0 @@
|
|||
/*
|
||||
Copyright 2024 Tyler Beckman
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
/**
|
||||
* pronouns.cc service provider
|
||||
* @module serviceProviders/pronounscc
|
||||
* @example
|
||||
* import { ServiceProviderDefinitions } from 'doipjs';
|
||||
* const sp = ServiceProviderDefinitions.data.pronounscc.processURI('https://pronouns.cc/@Alice');
|
||||
*/
|
||||
|
||||
import * as E from '../enums.js'
|
||||
import { ServiceProvider } from '../serviceProvider.js'
|
||||
|
||||
export const reURI = /^https:\/\/pronouns\.cc\/@(.*)\/?/
|
||||
|
||||
/**
|
||||
* @function
|
||||
* @param {string} uri - Claim URI to process
|
||||
* @returns {ServiceProvider} The service provider information based on the claim URI
|
||||
*/
|
||||
export function processURI (uri) {
|
||||
const match = uri.match(reURI)
|
||||
|
||||
return new ServiceProvider({
|
||||
about: {
|
||||
id: 'pronounscc',
|
||||
name: 'pronouns.cc',
|
||||
homepage: 'https://pronouns.cc'
|
||||
},
|
||||
profile: {
|
||||
display: `@${match[1]}`,
|
||||
uri: `https://pronouns.cc/@${match[1]}`,
|
||||
qr: null
|
||||
},
|
||||
claim: {
|
||||
uriRegularExpression: reURI.toString(),
|
||||
uriIsAmbiguous: false
|
||||
},
|
||||
proof: {
|
||||
request: {
|
||||
uri,
|
||||
fetcher: E.Fetcher.HTTP,
|
||||
accessRestriction: E.ProofAccessRestriction.NOCORS,
|
||||
data: {
|
||||
url: `https://pronouns.cc/api/v1/users/${match[1]}`,
|
||||
format: E.ProofFormat.JSON
|
||||
}
|
||||
},
|
||||
response: {
|
||||
format: E.ProofFormat.JSON
|
||||
},
|
||||
target: [
|
||||
{
|
||||
format: E.ClaimFormat.URI,
|
||||
encoding: E.EntityEncodingFormat.PLAIN,
|
||||
relation: E.ClaimRelation.CONTAINS,
|
||||
path: ['links']
|
||||
},
|
||||
{
|
||||
format: E.ClaimFormat.URI,
|
||||
encoding: E.EntityEncodingFormat.PLAIN,
|
||||
relation: E.ClaimRelation.CONTAINS,
|
||||
path: ['bio']
|
||||
}
|
||||
]
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export const tests = [
|
||||
{
|
||||
uri: 'https://pronouns.cc/@Alice',
|
||||
shouldMatch: true
|
||||
},
|
||||
{
|
||||
uri: 'https://pronouns.cc/@Alice/',
|
||||
shouldMatch: true
|
||||
},
|
||||
{
|
||||
uri: 'https://pronouns.cc/Alice',
|
||||
shouldMatch: false
|
||||
},
|
||||
{
|
||||
uri: 'https://pronouns.cc/Alice/',
|
||||
shouldMatch: false
|
||||
}
|
||||
]
|
|
@ -130,7 +130,6 @@ import { PublicKeyType, PublicKeyEncoding, PublicKeyFetchMethod, ProxyPolicy, Cl
|
|||
* Config related to the verification of IRC claims
|
||||
* @typedef {object} IrcClaimVerificationConfig
|
||||
* @property {string} nick - The nick that the library uses to connect to the IRC server
|
||||
* @property {{ domainRegex: string; username: string; password: string; }[]} sasl - An array of possible SASL logins
|
||||
*/
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue