mirror of
https://github.com/IT4Change/gradido.git
synced 2026-02-06 09:56:05 +00:00
add biome to federation, fix biome linting/formatting error, remove eslint
This commit is contained in:
parent
4ff7979bdc
commit
b63dbc1599
@ -1,3 +0,0 @@
|
|||||||
node_modules
|
|
||||||
**/*.min.js
|
|
||||||
build
|
|
||||||
@ -1,206 +0,0 @@
|
|||||||
// eslint-disable-next-line import/no-commonjs, import/unambiguous
|
|
||||||
module.exports = {
|
|
||||||
root: true,
|
|
||||||
env: {
|
|
||||||
node: true,
|
|
||||||
},
|
|
||||||
parser: '@typescript-eslint/parser',
|
|
||||||
plugins: ['prettier', '@typescript-eslint', 'import', 'n', 'promise'],
|
|
||||||
extends: [
|
|
||||||
'standard',
|
|
||||||
'eslint:recommended',
|
|
||||||
'plugin:prettier/recommended',
|
|
||||||
// 'plugin:import/recommended',
|
|
||||||
// 'plugin:import/typescript',
|
|
||||||
// 'plugin:security/recommended',
|
|
||||||
// 'plugin:@eslint-community/eslint-comments/recommended',
|
|
||||||
],
|
|
||||||
settings: {
|
|
||||||
'import/parsers': {
|
|
||||||
'@typescript-eslint/parser': ['.ts', '.tsx'],
|
|
||||||
},
|
|
||||||
'import/resolver': {
|
|
||||||
typescript: {
|
|
||||||
project: ['./tsconfig.json'],
|
|
||||||
},
|
|
||||||
node: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
rules: {
|
|
||||||
'no-console': 'error',
|
|
||||||
camelcase: 'error',
|
|
||||||
'no-debugger': 'error',
|
|
||||||
'prettier/prettier': [
|
|
||||||
'error',
|
|
||||||
{
|
|
||||||
htmlWhitespaceSensitivity: 'ignore',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
// import
|
|
||||||
// 'import/export': 'error',
|
|
||||||
// 'import/no-deprecated': 'error',
|
|
||||||
// 'import/no-empty-named-blocks': 'error',
|
|
||||||
// 'import/no-extraneous-dependencies': 'error',
|
|
||||||
// 'import/no-mutable-exports': 'error',
|
|
||||||
// 'import/no-unused-modules': 'error',
|
|
||||||
// 'import/no-named-as-default': 'error',
|
|
||||||
// 'import/no-named-as-default-member': 'error',
|
|
||||||
// 'import/no-amd': 'error',
|
|
||||||
// 'import/no-commonjs': 'error',
|
|
||||||
// 'import/no-import-module-exports': 'error',
|
|
||||||
// 'import/no-nodejs-modules': 'off',
|
|
||||||
// 'import/unambiguous': 'error',
|
|
||||||
// 'import/default': 'error',
|
|
||||||
// 'import/named': 'error',
|
|
||||||
// 'import/namespace': 'error',
|
|
||||||
// 'import/no-absolute-path': 'error',
|
|
||||||
// 'import/no-cycle': 'error',
|
|
||||||
// 'import/no-dynamic-require': 'error',
|
|
||||||
// 'import/no-internal-modules': 'off',
|
|
||||||
// 'import/no-relative-packages': 'error',
|
|
||||||
// 'import/no-relative-parent-imports': ['error', { ignore: ['@/*'] }],
|
|
||||||
// 'import/no-self-import': 'error',
|
|
||||||
// 'import/no-unresolved': 'error',
|
|
||||||
// 'import/no-useless-path-segments': 'error',
|
|
||||||
// 'import/no-webpack-loader-syntax': 'error',
|
|
||||||
// 'import/consistent-type-specifier-style': 'error',
|
|
||||||
// 'import/exports-last': 'off',
|
|
||||||
// 'import/extensions': 'error',
|
|
||||||
// 'import/first': 'error',
|
|
||||||
// 'import/group-exports': 'off',
|
|
||||||
// 'import/newline-after-import': 'error',
|
|
||||||
// 'import/no-anonymous-default-export': 'error',
|
|
||||||
// 'import/no-default-export': 'error',
|
|
||||||
// 'import/no-duplicates': 'error',
|
|
||||||
// 'import/no-named-default': 'error',
|
|
||||||
// 'import/no-namespace': 'error',
|
|
||||||
// 'import/no-unassigned-import': 'error',
|
|
||||||
// 'import/order': [
|
|
||||||
// 'error',
|
|
||||||
// {
|
|
||||||
// groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index', 'object', 'type'],
|
|
||||||
// 'newlines-between': 'always',
|
|
||||||
// pathGroups: [
|
|
||||||
// {
|
|
||||||
// pattern: '@?*/**',
|
|
||||||
// group: 'external',
|
|
||||||
// position: 'after',
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// pattern: '@/**',
|
|
||||||
// group: 'external',
|
|
||||||
// position: 'after',
|
|
||||||
// },
|
|
||||||
// ],
|
|
||||||
// alphabetize: {
|
|
||||||
// order: 'asc' /* sort in ascending order. Options: ['ignore', 'asc', 'desc'] */,
|
|
||||||
// caseInsensitive: true /* ignore case. Options: [true, false] */,
|
|
||||||
// },
|
|
||||||
// distinctGroup: true,
|
|
||||||
// },
|
|
||||||
// ],
|
|
||||||
// 'import/prefer-default-export': 'off',
|
|
||||||
// n
|
|
||||||
// 'n/handle-callback-err': 'error',
|
|
||||||
// 'n/no-callback-literal': 'error',
|
|
||||||
// 'n/no-exports-assign': 'error',
|
|
||||||
// 'n/no-extraneous-import': 'error',
|
|
||||||
// 'n/no-extraneous-require': 'error',
|
|
||||||
// 'n/no-hide-core-modules': 'error',
|
|
||||||
// 'n/no-missing-import': 'off', // not compatible with typescript
|
|
||||||
// 'n/no-missing-require': 'error',
|
|
||||||
// 'n/no-new-require': 'error',
|
|
||||||
// 'n/no-path-concat': 'error',
|
|
||||||
// 'n/no-process-exit': 'error',
|
|
||||||
// 'n/no-unpublished-bin': 'error',
|
|
||||||
// 'n/no-unpublished-import': 'off', // TODO need to exclude seeds
|
|
||||||
// 'n/no-unpublished-require': 'error',
|
|
||||||
// 'n/no-unsupported-features': ['error', { ignores: ['modules'] }],
|
|
||||||
// 'n/no-unsupported-features/es-builtins': 'error',
|
|
||||||
// 'n/no-unsupported-features/es-syntax': 'error',
|
|
||||||
// 'n/no-unsupported-features/node-builtins': 'error',
|
|
||||||
// 'n/process-exit-as-throw': 'error',
|
|
||||||
// 'n/shebang': 'error',
|
|
||||||
// 'n/callback-return': 'error',
|
|
||||||
// 'n/exports-style': 'error',
|
|
||||||
// 'n/file-extension-in-import': 'off',
|
|
||||||
// 'n/global-require': 'error',
|
|
||||||
// 'n/no-mixed-requires': 'error',
|
|
||||||
// 'n/no-process-env': 'error',
|
|
||||||
// 'n/no-restricted-import': 'error',
|
|
||||||
// 'n/no-restricted-require': 'error',
|
|
||||||
// 'n/no-sync': 'error',
|
|
||||||
// 'n/prefer-global/buffer': 'error',
|
|
||||||
// 'n/prefer-global/console': 'error',
|
|
||||||
// 'n/prefer-global/process': 'error',
|
|
||||||
// 'n/prefer-global/text-decoder': 'error',
|
|
||||||
// 'n/prefer-global/text-encoder': 'error',
|
|
||||||
// 'n/prefer-global/url': 'error',
|
|
||||||
// 'n/prefer-global/url-search-params': 'error',
|
|
||||||
// 'n/prefer-promises/dns': 'error',
|
|
||||||
// 'n/prefer-promises/fs': 'error',
|
|
||||||
// promise
|
|
||||||
// 'promise/catch-or-return': 'error',
|
|
||||||
// 'promise/no-return-wrap': 'error',
|
|
||||||
// 'promise/param-names': 'error',
|
|
||||||
// 'promise/always-return': 'error',
|
|
||||||
// 'promise/no-native': 'off',
|
|
||||||
// 'promise/no-nesting': 'warn',
|
|
||||||
// 'promise/no-promise-in-callback': 'warn',
|
|
||||||
// 'promise/no-callback-in-promise': 'warn',
|
|
||||||
// 'promise/avoid-new': 'warn',
|
|
||||||
// 'promise/no-new-statics': 'error',
|
|
||||||
// 'promise/no-return-in-finally': 'warn',
|
|
||||||
// 'promise/valid-params': 'warn',
|
|
||||||
// 'promise/prefer-await-to-callbacks': 'error',
|
|
||||||
// 'promise/no-multiple-resolved': 'error',
|
|
||||||
// eslint comments
|
|
||||||
// '@eslint-community/eslint-comments/disable-enable-pair': ['error', { allowWholeFile: true }],
|
|
||||||
// '@eslint-community/eslint-comments/no-restricted-disable': 'error',
|
|
||||||
// '@eslint-community/eslint-comments/no-use': 'off',
|
|
||||||
// '@eslint-community/eslint-comments/require-description': 'off',
|
|
||||||
},
|
|
||||||
overrides: [
|
|
||||||
// only for ts files
|
|
||||||
{
|
|
||||||
files: ['*.ts', '*.tsx'],
|
|
||||||
extends: [
|
|
||||||
'plugin:@typescript-eslint/recommended',
|
|
||||||
// 'plugin:@typescript-eslint/recommended-requiring-type-checking',
|
|
||||||
// 'plugin:@typescript-eslint/strict',
|
|
||||||
// 'plugin:type-graphql/recommended',
|
|
||||||
],
|
|
||||||
rules: {
|
|
||||||
// allow explicitly defined dangling promises
|
|
||||||
// '@typescript-eslint/no-floating-promises': ['error', { ignoreVoid: true }],
|
|
||||||
'no-void': ['error', { allowAsStatement: true }],
|
|
||||||
// ignore prefer-regexp-exec rule to allow string.match(regex)
|
|
||||||
'@typescript-eslint/prefer-regexp-exec': 'off',
|
|
||||||
// this should not run on ts files: https://github.com/import-js/eslint-plugin-import/issues/2215#issuecomment-911245486
|
|
||||||
'import/unambiguous': 'off',
|
|
||||||
// this is not compatible with typeorm, due to joined tables can be null, but are not defined as nullable
|
|
||||||
'@typescript-eslint/no-unnecessary-condition': 'off',
|
|
||||||
},
|
|
||||||
parserOptions: {
|
|
||||||
tsconfigRootDir: __dirname,
|
|
||||||
project: ['./tsconfig.json'],
|
|
||||||
// this is to properly reference the referenced project database without requirement of compiling it
|
|
||||||
// eslint-disable-next-line camelcase
|
|
||||||
EXPERIMENTAL_useSourceOfProjectReferenceRedirect: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
files: ['*.test.ts'],
|
|
||||||
plugins: ['jest'],
|
|
||||||
rules: {
|
|
||||||
'jest/no-disabled-tests': 'error',
|
|
||||||
'jest/no-focused-tests': 'error',
|
|
||||||
'jest/no-identical-title': 'error',
|
|
||||||
'jest/prefer-to-have-length': 'error',
|
|
||||||
'jest/valid-expect': 'error',
|
|
||||||
'@typescript-eslint/unbound-method': 'off',
|
|
||||||
// 'jest/unbound-method': 'error',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}
|
|
||||||
@ -1,9 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
semi: false,
|
|
||||||
printWidth: 100,
|
|
||||||
singleQuote: true,
|
|
||||||
trailingComma: "all",
|
|
||||||
tabWidth: 2,
|
|
||||||
bracketSpacing: true,
|
|
||||||
endOfLine: "auto",
|
|
||||||
};
|
|
||||||
@ -37,6 +37,7 @@
|
|||||||
"uuid": "8.3.2"
|
"uuid": "8.3.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@biomejs/biome": "1.9.4",
|
||||||
"@types/express": "4.17.12",
|
"@types/express": "4.17.12",
|
||||||
"@types/jest": "27.0.2",
|
"@types/jest": "27.0.2",
|
||||||
"@types/joi": "^17.2.3",
|
"@types/joi": "^17.2.3",
|
||||||
@ -44,20 +45,7 @@
|
|||||||
"@types/node": "^16.10.3",
|
"@types/node": "^16.10.3",
|
||||||
"@types/sodium-native": "^2.3.5",
|
"@types/sodium-native": "^2.3.5",
|
||||||
"@types/uuid": "^8.3.4",
|
"@types/uuid": "^8.3.4",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.57.1",
|
|
||||||
"@typescript-eslint/parser": "^5.57.1",
|
|
||||||
"apollo-server-testing": "2.25.2",
|
"apollo-server-testing": "2.25.2",
|
||||||
"eslint": "^8.37.0",
|
|
||||||
"eslint-config-prettier": "^8.8.0",
|
|
||||||
"eslint-config-standard": "^17.0.0",
|
|
||||||
"eslint-import-resolver-typescript": "^3.5.4",
|
|
||||||
"eslint-plugin-import": "^2.27.5",
|
|
||||||
"eslint-plugin-jest": "^27.2.1",
|
|
||||||
"eslint-plugin-n": "^15.7.0",
|
|
||||||
"eslint-plugin-prettier": "^4.2.1",
|
|
||||||
"eslint-plugin-promise": "^6.1.1",
|
|
||||||
"eslint-plugin-security": "^1.7.1",
|
|
||||||
"eslint-plugin-type-graphql": "^1.0.0",
|
|
||||||
"gradido-config": "../config",
|
"gradido-config": "../config",
|
||||||
"graphql-tag": "^2.12.6",
|
"graphql-tag": "^2.12.6",
|
||||||
"jest": "^27.2.4",
|
"jest": "^27.2.4",
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
|
import { federationLogger as logger } from '@/server/logger'
|
||||||
import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity'
|
import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity'
|
||||||
import { GraphQLClient } from 'graphql-request'
|
import { GraphQLClient } from 'graphql-request'
|
||||||
import { federationLogger as logger } from '@/server/logger'
|
|
||||||
|
|
||||||
import { OpenConnectionCallbackArgs } from '@/graphql/api/1_0/model/OpenConnectionCallbackArgs'
|
|
||||||
import { openConnectionCallback } from './query/openConnectionCallback'
|
|
||||||
import { AuthenticationArgs } from '@/graphql/api/1_0/model/AuthenticationArgs'
|
import { AuthenticationArgs } from '@/graphql/api/1_0/model/AuthenticationArgs'
|
||||||
|
import { OpenConnectionCallbackArgs } from '@/graphql/api/1_0/model/OpenConnectionCallbackArgs'
|
||||||
import { authenticate } from './query/authenticate'
|
import { authenticate } from './query/authenticate'
|
||||||
|
import { openConnectionCallback } from './query/openConnectionCallback'
|
||||||
|
|
||||||
export class AuthenticationClient {
|
export class AuthenticationClient {
|
||||||
dbCom: DbFederatedCommunity
|
dbCom: DbFederatedCommunity
|
||||||
@ -29,9 +29,8 @@ export class AuthenticationClient {
|
|||||||
async openConnectionCallback(args: OpenConnectionCallbackArgs): Promise<boolean> {
|
async openConnectionCallback(args: OpenConnectionCallbackArgs): Promise<boolean> {
|
||||||
logger.debug('Authentication: openConnectionCallback with endpoint', this.endpoint, args)
|
logger.debug('Authentication: openConnectionCallback with endpoint', this.endpoint, args)
|
||||||
try {
|
try {
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any
|
|
||||||
const { data } = await this.client.rawRequest<any>(openConnectionCallback, { args })
|
const { data } = await this.client.rawRequest<any>(openConnectionCallback, { args })
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
||||||
if (data && data.openConnectionCallback) {
|
if (data && data.openConnectionCallback) {
|
||||||
logger.warn(
|
logger.warn(
|
||||||
'Authentication: openConnectionCallback without response data from endpoint',
|
'Authentication: openConnectionCallback without response data from endpoint',
|
||||||
@ -53,10 +52,9 @@ export class AuthenticationClient {
|
|||||||
async authenticate(args: AuthenticationArgs): Promise<string | null> {
|
async authenticate(args: AuthenticationArgs): Promise<string | null> {
|
||||||
logger.debug('Authentication: authenticate with endpoint=', this.endpoint)
|
logger.debug('Authentication: authenticate with endpoint=', this.endpoint)
|
||||||
try {
|
try {
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any
|
|
||||||
const { data } = await this.client.rawRequest<any>(authenticate, { args })
|
const { data } = await this.client.rawRequest<any>(authenticate, { args })
|
||||||
logger.debug('Authentication: after authenticate: data:', data)
|
logger.debug('Authentication: after authenticate: data:', data)
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
||||||
const authUuid: string = data?.authenticate
|
const authUuid: string = data?.authenticate
|
||||||
if (authUuid) {
|
if (authUuid) {
|
||||||
logger.debug('Authentication: received authenticated uuid', authUuid)
|
logger.debug('Authentication: received authenticated uuid', authUuid)
|
||||||
|
|||||||
@ -1,5 +1,3 @@
|
|||||||
// eslint-disable-next-line camelcase
|
|
||||||
import { AuthenticationClient as V1_0_AuthenticationClient } from '../1_0/AuthenticationClient'
|
import { AuthenticationClient as V1_0_AuthenticationClient } from '../1_0/AuthenticationClient'
|
||||||
|
|
||||||
// eslint-disable-next-line camelcase
|
|
||||||
export class AuthenticationClient extends V1_0_AuthenticationClient {}
|
export class AuthenticationClient extends V1_0_AuthenticationClient {}
|
||||||
|
|||||||
@ -1,20 +1,18 @@
|
|||||||
import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity'
|
import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity'
|
||||||
// eslint-disable-next-line camelcase
|
|
||||||
import { AuthenticationClient as V1_0_AuthenticationClient } from './1_0/AuthenticationClient'
|
import { AuthenticationClient as V1_0_AuthenticationClient } from './1_0/AuthenticationClient'
|
||||||
// eslint-disable-next-line camelcase
|
|
||||||
import { AuthenticationClient as V1_1_AuthenticationClient } from './1_1/AuthenticationClient'
|
import { AuthenticationClient as V1_1_AuthenticationClient } from './1_1/AuthenticationClient'
|
||||||
import { ApiVersionType } from './enum/ApiVersionType'
|
import { ApiVersionType } from './enum/ApiVersionType'
|
||||||
|
|
||||||
// eslint-disable-next-line camelcase
|
|
||||||
type AuthenticationClient = V1_0_AuthenticationClient | V1_1_AuthenticationClient
|
type AuthenticationClient = V1_0_AuthenticationClient | V1_1_AuthenticationClient
|
||||||
|
|
||||||
interface AuthenticationClientInstance {
|
interface AuthenticationClientInstance {
|
||||||
id: number
|
id: number
|
||||||
// eslint-disable-next-line no-use-before-define
|
|
||||||
client: AuthenticationClient
|
client: AuthenticationClient
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-extraneous-class
|
|
||||||
export class AuthenticationClientFactory {
|
export class AuthenticationClientFactory {
|
||||||
private static instanceArray: AuthenticationClientInstance[] = []
|
private static instanceArray: AuthenticationClientInstance[] = []
|
||||||
|
|
||||||
@ -22,7 +20,7 @@ export class AuthenticationClientFactory {
|
|||||||
* The Singleton's constructor should always be private to prevent direct
|
* The Singleton's constructor should always be private to prevent direct
|
||||||
* construction calls with the `new` operator.
|
* construction calls with the `new` operator.
|
||||||
*/
|
*/
|
||||||
// eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function
|
|
||||||
private constructor() {}
|
private constructor() {}
|
||||||
|
|
||||||
private static createAuthenticationClient = (dbCom: DbFederatedCommunity) => {
|
private static createAuthenticationClient = (dbCom: DbFederatedCommunity) => {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
|
import { latestDbVersion } from '@dbTools/config/detectLastDBVersion'
|
||||||
// ATTENTION: DO NOT PUT ANY SECRETS IN HERE (or the .env)
|
// ATTENTION: DO NOT PUT ANY SECRETS IN HERE (or the .env)
|
||||||
import { Decimal } from 'decimal.js-light'
|
import { Decimal } from 'decimal.js-light'
|
||||||
import { latestDbVersion } from '@dbTools/config/detectLastDBVersion'
|
|
||||||
import dotenv from 'dotenv'
|
import dotenv from 'dotenv'
|
||||||
|
|
||||||
import { validate } from '@config/index'
|
import { validate } from '@config/index'
|
||||||
@ -63,5 +63,3 @@ export const CONFIG = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
validate(schema, CONFIG)
|
validate(schema, CONFIG)
|
||||||
|
|
||||||
export default CONFIG
|
|
||||||
|
|||||||
@ -6,7 +6,6 @@ export class GetPublicCommunityInfoResultLoggingView extends AbstractLoggingView
|
|||||||
super()
|
super()
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
||||||
public toJSON(): any {
|
public toJSON(): any {
|
||||||
return {
|
return {
|
||||||
name: this.self.name,
|
name: this.self.name,
|
||||||
|
|||||||
@ -1,12 +1,11 @@
|
|||||||
import { AbstractLoggingView } from '@logging/AbstractLogging.view'
|
|
||||||
import { SendCoinsArgs } from '@/graphql/api/1_0/model/SendCoinsArgs'
|
import { SendCoinsArgs } from '@/graphql/api/1_0/model/SendCoinsArgs'
|
||||||
|
import { AbstractLoggingView } from '@logging/AbstractLogging.view'
|
||||||
|
|
||||||
export class SendCoinsArgsLoggingView extends AbstractLoggingView {
|
export class SendCoinsArgsLoggingView extends AbstractLoggingView {
|
||||||
public constructor(private self: SendCoinsArgs) {
|
public constructor(private self: SendCoinsArgs) {
|
||||||
super()
|
super()
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
||||||
public toJSON(): any {
|
public toJSON(): any {
|
||||||
return {
|
return {
|
||||||
recipientCommunityUuid: this.self.recipientCommunityUuid,
|
recipientCommunityUuid: this.self.recipientCommunityUuid,
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import { Decimal } from 'decimal.js-light'
|
import { Decimal } from 'decimal.js-light'
|
||||||
import { ObjectType, Field, Int } from 'type-graphql'
|
import { Field, Int, ObjectType } from 'type-graphql'
|
||||||
|
|
||||||
interface DecayInterface {
|
interface DecayInterface {
|
||||||
balance: Decimal
|
balance: Decimal
|
||||||
|
|||||||
@ -1,10 +1,8 @@
|
|||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
||||||
import { Community as DbCommunity } from '@entity/Community'
|
import { Community as DbCommunity } from '@entity/Community'
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
||||||
import { Field, ObjectType } from 'type-graphql'
|
import { Field, ObjectType } from 'type-graphql'
|
||||||
|
|
||||||
@ObjectType()
|
@ObjectType()
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
||||||
export class GetPublicCommunityInfoResult {
|
export class GetPublicCommunityInfoResult {
|
||||||
constructor(dbCom: DbCommunity) {
|
constructor(dbCom: DbCommunity) {
|
||||||
this.publicKey = dbCom.publicKey.toString('hex')
|
this.publicKey = dbCom.publicKey.toString('hex')
|
||||||
|
|||||||
@ -1,8 +1,6 @@
|
|||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
||||||
import { Field, ObjectType } from 'type-graphql'
|
import { Field, ObjectType } from 'type-graphql'
|
||||||
|
|
||||||
@ObjectType()
|
@ObjectType()
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
||||||
export class GetPublicKeyResult {
|
export class GetPublicKeyResult {
|
||||||
constructor(pubKey: string) {
|
constructor(pubKey: string) {
|
||||||
this.publicKey = pubKey
|
this.publicKey = pubKey
|
||||||
|
|||||||
@ -1,16 +1,15 @@
|
|||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
import { CONFIG } from '@/config'
|
||||||
import { Arg, Mutation, Resolver } from 'type-graphql'
|
import { LogError } from '@/server/LogError'
|
||||||
import { federationLogger as logger } from '@/server/logger'
|
import { federationLogger as logger } from '@/server/logger'
|
||||||
import { Community as DbCommunity } from '@entity/Community'
|
import { Community as DbCommunity } from '@entity/Community'
|
||||||
import { FederatedCommunity as DbFedCommunity } from '@entity/FederatedCommunity'
|
import { FederatedCommunity as DbFedCommunity } from '@entity/FederatedCommunity'
|
||||||
import { CommunityLoggingView } from '@logging/CommunityLogging.view'
|
import { CommunityLoggingView } from '@logging/CommunityLogging.view'
|
||||||
import { FederatedCommunityLoggingView } from '@logging/FederatedCommunityLogging.view'
|
import { FederatedCommunityLoggingView } from '@logging/FederatedCommunityLogging.view'
|
||||||
import { LogError } from '@/server/LogError'
|
import { Arg, Mutation, Resolver } from 'type-graphql'
|
||||||
import { OpenConnectionArgs } from '../model/OpenConnectionArgs'
|
|
||||||
import { startAuthentication, startOpenConnectionCallback } from '../util/authenticateCommunity'
|
|
||||||
import { OpenConnectionCallbackArgs } from '../model/OpenConnectionCallbackArgs'
|
|
||||||
import { CONFIG } from '@/config'
|
|
||||||
import { AuthenticationArgs } from '../model/AuthenticationArgs'
|
import { AuthenticationArgs } from '../model/AuthenticationArgs'
|
||||||
|
import { OpenConnectionArgs } from '../model/OpenConnectionArgs'
|
||||||
|
import { OpenConnectionCallbackArgs } from '../model/OpenConnectionCallbackArgs'
|
||||||
|
import { startAuthentication, startOpenConnectionCallback } from '../util/authenticateCommunity'
|
||||||
|
|
||||||
@Resolver()
|
@Resolver()
|
||||||
export class AuthenticationResolver {
|
export class AuthenticationResolver {
|
||||||
@ -30,7 +29,7 @@ export class AuthenticationResolver {
|
|||||||
throw new LogError(`unknown requesting community with publicKey`, pubKeyBuf.toString('hex'))
|
throw new LogError(`unknown requesting community with publicKey`, pubKeyBuf.toString('hex'))
|
||||||
}
|
}
|
||||||
logger.debug(`Authentication: found requestedCom:`, new CommunityLoggingView(comA))
|
logger.debug(`Authentication: found requestedCom:`, new CommunityLoggingView(comA))
|
||||||
// no await to respond immediatly and invoke callback-request asynchron
|
// biome-ignore lint/complexity/noVoid: no await to respond immediately and invoke callback-request asynchronously
|
||||||
void startOpenConnectionCallback(args, comA, CONFIG.FEDERATION_API)
|
void startOpenConnectionCallback(args, comA, CONFIG.FEDERATION_API)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
@ -53,7 +52,7 @@ export class AuthenticationResolver {
|
|||||||
`Authentication: found fedComB and start authentication:`,
|
`Authentication: found fedComB and start authentication:`,
|
||||||
new FederatedCommunityLoggingView(fedComB),
|
new FederatedCommunityLoggingView(fedComB),
|
||||||
)
|
)
|
||||||
// no await to respond immediatly and invoke authenticate-request asynchron
|
// biome-ignore lint/complexity/noVoid: no await to respond immediately and invoke authenticate-request asynchronously
|
||||||
void startAuthentication(args.oneTimeCode, fedComB)
|
void startAuthentication(args.oneTimeCode, fedComB)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,10 +1,9 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
import { CONFIG } from '@/config'
|
||||||
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
import { createServer } from '@/server/createServer'
|
||||||
import { createTestClient } from 'apollo-server-testing'
|
|
||||||
import createServer from '@/server/createServer'
|
|
||||||
import { Community as DbCommunity } from '@entity/Community'
|
|
||||||
import CONFIG from '@/config'
|
|
||||||
import { Connection } from '@dbTools/typeorm'
|
import { Connection } from '@dbTools/typeorm'
|
||||||
|
import { Community as DbCommunity } from '@entity/Community'
|
||||||
|
|
||||||
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
|
|
||||||
let query: any
|
let query: any
|
||||||
|
|
||||||
|
|||||||
@ -1,9 +1,8 @@
|
|||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
||||||
import { Query, Resolver } from 'type-graphql'
|
|
||||||
import { federationLogger as logger } from '@/server/logger'
|
import { federationLogger as logger } from '@/server/logger'
|
||||||
import { Community as DbCommunity } from '@entity/Community'
|
import { Community as DbCommunity } from '@entity/Community'
|
||||||
import { GetPublicCommunityInfoResult } from '../model/GetPublicCommunityInfoResult'
|
import { Query, Resolver } from 'type-graphql'
|
||||||
import { GetPublicCommunityInfoResultLoggingView } from '../logger/GetPublicCommunityInfoResultLogging.view'
|
import { GetPublicCommunityInfoResultLoggingView } from '../logger/GetPublicCommunityInfoResultLogging.view'
|
||||||
|
import { GetPublicCommunityInfoResult } from '../model/GetPublicCommunityInfoResult'
|
||||||
|
|
||||||
@Resolver()
|
@Resolver()
|
||||||
export class PublicCommunityInfoResolver {
|
export class PublicCommunityInfoResolver {
|
||||||
|
|||||||
@ -1,9 +1,7 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
import { CONFIG } from '@/config'
|
||||||
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
import { createServer } from '@/server/createServer'
|
||||||
import { createTestClient } from 'apollo-server-testing'
|
|
||||||
import createServer from '@/server/createServer'
|
|
||||||
import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity'
|
import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity'
|
||||||
import CONFIG from '@/config'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
|
|
||||||
let query: any
|
let query: any
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
||||||
import { Query, Resolver } from 'type-graphql'
|
|
||||||
import { federationLogger as logger } from '@/server/logger'
|
import { federationLogger as logger } from '@/server/logger'
|
||||||
import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity'
|
import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity'
|
||||||
|
import { Query, Resolver } from 'type-graphql'
|
||||||
import { GetPublicKeyResult } from '../model/GetPublicKeyResult'
|
import { GetPublicKeyResult } from '../model/GetPublicKeyResult'
|
||||||
|
|
||||||
@Resolver()
|
@Resolver()
|
||||||
|
|||||||
@ -1,16 +1,14 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
import { CONFIG } from '@/config'
|
||||||
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
import { fullName } from '@/graphql/util/fullName'
|
||||||
import { ApolloServerTestClient } from 'apollo-server-testing'
|
import { Connection } from '@dbTools/typeorm'
|
||||||
import { Community as DbCommunity } from '@entity/Community'
|
import { Community as DbCommunity } from '@entity/Community'
|
||||||
import CONFIG from '@/config'
|
|
||||||
import { User as DbUser } from '@entity/User'
|
import { User as DbUser } from '@entity/User'
|
||||||
import { UserContact as DbUserContact } from '@entity/UserContact'
|
import { UserContact as DbUserContact } from '@entity/UserContact'
|
||||||
import { fullName } from '@/graphql/util/fullName'
|
|
||||||
import { GraphQLError } from 'graphql'
|
|
||||||
import { cleanDB, testEnvironment } from '@test/helpers'
|
import { cleanDB, testEnvironment } from '@test/helpers'
|
||||||
import { logger } from '@test/testSetup'
|
import { logger } from '@test/testSetup'
|
||||||
import { Connection } from '@dbTools/typeorm'
|
import { ApolloServerTestClient } from 'apollo-server-testing'
|
||||||
import Decimal from 'decimal.js-light'
|
import Decimal from 'decimal.js-light'
|
||||||
|
import { GraphQLError } from 'graphql'
|
||||||
import { SendCoinsArgs } from '../model/SendCoinsArgs'
|
import { SendCoinsArgs } from '../model/SendCoinsArgs'
|
||||||
|
|
||||||
let mutate: ApolloServerTestClient['mutate'] // , con: Connection
|
let mutate: ApolloServerTestClient['mutate'] // , con: Connection
|
||||||
|
|||||||
@ -1,22 +1,22 @@
|
|||||||
import { Arg, Mutation, Resolver } from 'type-graphql'
|
import { findUserByIdentifier } from '@/graphql/util/findUserByIdentifier'
|
||||||
|
import { fullName } from '@/graphql/util/fullName'
|
||||||
|
import { LogError } from '@/server/LogError'
|
||||||
import { federationLogger as logger } from '@/server/logger'
|
import { federationLogger as logger } from '@/server/logger'
|
||||||
import { PendingTransactionLoggingView } from '@logging/PendingTransactionLogging.view'
|
|
||||||
import { Community as DbCommunity } from '@entity/Community'
|
import { Community as DbCommunity } from '@entity/Community'
|
||||||
import { PendingTransaction as DbPendingTransaction } from '@entity/PendingTransaction'
|
import { PendingTransaction as DbPendingTransaction } from '@entity/PendingTransaction'
|
||||||
import { SendCoinsArgs } from '../model/SendCoinsArgs'
|
import { PendingTransactionLoggingView } from '@logging/PendingTransactionLogging.view'
|
||||||
import { LogError } from '@/server/LogError'
|
import Decimal from 'decimal.js-light'
|
||||||
|
import { Arg, Mutation, Resolver } from 'type-graphql'
|
||||||
import { PendingTransactionState } from '../enum/PendingTransactionState'
|
import { PendingTransactionState } from '../enum/PendingTransactionState'
|
||||||
import { TransactionTypeId } from '../enum/TransactionTypeId'
|
import { TransactionTypeId } from '../enum/TransactionTypeId'
|
||||||
|
import { SendCoinsArgsLoggingView } from '../logger/SendCoinsArgsLogging.view'
|
||||||
|
import { SendCoinsArgs } from '../model/SendCoinsArgs'
|
||||||
|
import { SendCoinsResult } from '../model/SendCoinsResult'
|
||||||
import { calculateRecipientBalance } from '../util/calculateRecipientBalance'
|
import { calculateRecipientBalance } from '../util/calculateRecipientBalance'
|
||||||
import { fullName } from '@/graphql/util/fullName'
|
|
||||||
import { settlePendingReceiveTransaction } from '../util/settlePendingReceiveTransaction'
|
|
||||||
// import { checkTradingLevel } from '@/graphql/util/checkTradingLevel'
|
// import { checkTradingLevel } from '@/graphql/util/checkTradingLevel'
|
||||||
import { revertSettledReceiveTransaction } from '../util/revertSettledReceiveTransaction'
|
import { revertSettledReceiveTransaction } from '../util/revertSettledReceiveTransaction'
|
||||||
import { findUserByIdentifier } from '@/graphql/util/findUserByIdentifier'
|
import { settlePendingReceiveTransaction } from '../util/settlePendingReceiveTransaction'
|
||||||
import { SendCoinsResult } from '../model/SendCoinsResult'
|
|
||||||
import Decimal from 'decimal.js-light'
|
|
||||||
import { storeForeignUser } from '../util/storeForeignUser'
|
import { storeForeignUser } from '../util/storeForeignUser'
|
||||||
import { SendCoinsArgsLoggingView } from '../logger/SendCoinsArgsLogging.view'
|
|
||||||
|
|
||||||
@Resolver()
|
@Resolver()
|
||||||
export class SendCoinsResolver {
|
export class SendCoinsResolver {
|
||||||
|
|||||||
@ -1,16 +1,16 @@
|
|||||||
import { OpenConnectionArgs } from '../model/OpenConnectionArgs'
|
import { federationLogger as logger } from '@/server/logger'
|
||||||
import { Community as DbCommunity } from '@entity/Community'
|
import { Community as DbCommunity } from '@entity/Community'
|
||||||
import { FederatedCommunity as DbFedCommunity } from '@entity/FederatedCommunity'
|
import { FederatedCommunity as DbFedCommunity } from '@entity/FederatedCommunity'
|
||||||
import { federationLogger as logger } from '@/server/logger'
|
import { OpenConnectionArgs } from '../model/OpenConnectionArgs'
|
||||||
import { OpenConnectionCallbackArgs } from '../model/OpenConnectionCallbackArgs'
|
import { OpenConnectionCallbackArgs } from '../model/OpenConnectionCallbackArgs'
|
||||||
// eslint-disable-next-line camelcase
|
|
||||||
import { randombytes_random } from 'sodium-native'
|
|
||||||
import { AuthenticationClientFactory } from '@/client/AuthenticationClientFactory'
|
import { AuthenticationClientFactory } from '@/client/AuthenticationClientFactory'
|
||||||
// eslint-disable-next-line camelcase
|
import { randombytes_random } from 'sodium-native'
|
||||||
|
|
||||||
import { AuthenticationClient as V1_0_AuthenticationClient } from '@/client/1_0/AuthenticationClient'
|
import { AuthenticationClient as V1_0_AuthenticationClient } from '@/client/1_0/AuthenticationClient'
|
||||||
import { AuthenticationArgs } from '../model/AuthenticationArgs'
|
|
||||||
import { CommunityLoggingView } from '@logging/CommunityLogging.view'
|
import { CommunityLoggingView } from '@logging/CommunityLogging.view'
|
||||||
import { FederatedCommunityLoggingView } from '@logging/FederatedCommunityLogging.view'
|
import { FederatedCommunityLoggingView } from '@logging/FederatedCommunityLogging.view'
|
||||||
|
import { AuthenticationArgs } from '../model/AuthenticationArgs'
|
||||||
|
|
||||||
export async function startOpenConnectionCallback(
|
export async function startOpenConnectionCallback(
|
||||||
args: OpenConnectionArgs,
|
args: OpenConnectionArgs,
|
||||||
@ -41,7 +41,7 @@ export async function startOpenConnectionCallback(
|
|||||||
)
|
)
|
||||||
|
|
||||||
const client = AuthenticationClientFactory.getInstance(fedComA)
|
const client = AuthenticationClientFactory.getInstance(fedComA)
|
||||||
// eslint-disable-next-line camelcase
|
|
||||||
if (client instanceof V1_0_AuthenticationClient) {
|
if (client instanceof V1_0_AuthenticationClient) {
|
||||||
const callbackArgs = new OpenConnectionCallbackArgs()
|
const callbackArgs = new OpenConnectionCallbackArgs()
|
||||||
callbackArgs.oneTimeCode = oneTimeCode.toString()
|
callbackArgs.oneTimeCode = oneTimeCode.toString()
|
||||||
@ -74,7 +74,7 @@ export async function startAuthentication(
|
|||||||
|
|
||||||
// TODO encrypt homeCom.uuid with homeCom.privateKey and sign it with callbackFedCom.publicKey
|
// TODO encrypt homeCom.uuid with homeCom.privateKey and sign it with callbackFedCom.publicKey
|
||||||
const client = AuthenticationClientFactory.getInstance(fedComB)
|
const client = AuthenticationClientFactory.getInstance(fedComB)
|
||||||
// eslint-disable-next-line camelcase
|
|
||||||
if (client instanceof V1_0_AuthenticationClient) {
|
if (client instanceof V1_0_AuthenticationClient) {
|
||||||
const authenticationArgs = new AuthenticationArgs()
|
const authenticationArgs = new AuthenticationArgs()
|
||||||
authenticationArgs.oneTimeCode = oneTimeCode
|
authenticationArgs.oneTimeCode = oneTimeCode
|
||||||
|
|||||||
@ -9,7 +9,9 @@ export async function calculateRecipientBalance(
|
|||||||
time: Date,
|
time: Date,
|
||||||
): Promise<{ balance: Decimal; decay: Decay; lastTransactionId: number } | null> {
|
): Promise<{ balance: Decimal; decay: Decay; lastTransactionId: number } | null> {
|
||||||
const lastTransaction = await getLastTransaction(userId)
|
const lastTransaction = await getLastTransaction(userId)
|
||||||
if (!lastTransaction) return null
|
if (!lastTransaction) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
const decay = calculateDecay(lastTransaction.balance, lastTransaction.balanceDate, time)
|
const decay = calculateDecay(lastTransaction.balance, lastTransaction.balanceDate, time)
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,3 @@
|
|||||||
/* eslint-disable @typescript-eslint/restrict-template-expressions */
|
|
||||||
/* eslint-disable new-cap */
|
|
||||||
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
||||||
|
|
||||||
import { getConnection } from '@dbTools/typeorm'
|
import { getConnection } from '@dbTools/typeorm'
|
||||||
import { Community as DbCommunity } from '@entity/Community'
|
import { Community as DbCommunity } from '@entity/Community'
|
||||||
import { PendingTransaction as DbPendingTransaction } from '@entity/PendingTransaction'
|
import { PendingTransaction as DbPendingTransaction } from '@entity/PendingTransaction'
|
||||||
@ -13,12 +9,12 @@ import { PendingTransactionState } from '../enum/PendingTransactionState'
|
|||||||
import { LogError } from '@/server/LogError'
|
import { LogError } from '@/server/LogError'
|
||||||
import { federationLogger as logger } from '@/server/logger'
|
import { federationLogger as logger } from '@/server/logger'
|
||||||
|
|
||||||
import { getLastTransaction } from '@/graphql/util/getLastTransaction'
|
|
||||||
import { TRANSACTIONS_LOCK } from '@/graphql/util/TRANSACTIONS_LOCK'
|
import { TRANSACTIONS_LOCK } from '@/graphql/util/TRANSACTIONS_LOCK'
|
||||||
|
import { getLastTransaction } from '@/graphql/util/getLastTransaction'
|
||||||
import { CommunityLoggingView } from '@logging/CommunityLogging.view'
|
import { CommunityLoggingView } from '@logging/CommunityLogging.view'
|
||||||
import { UserLoggingView } from '@logging/UserLogging.view'
|
|
||||||
import { PendingTransactionLoggingView } from '@logging/PendingTransactionLogging.view'
|
import { PendingTransactionLoggingView } from '@logging/PendingTransactionLogging.view'
|
||||||
import { TransactionLoggingView } from '@logging/TransactionLogging.view'
|
import { TransactionLoggingView } from '@logging/TransactionLogging.view'
|
||||||
|
import { UserLoggingView } from '@logging/UserLogging.view'
|
||||||
|
|
||||||
export async function revertSettledReceiveTransaction(
|
export async function revertSettledReceiveTransaction(
|
||||||
homeCom: DbCommunity,
|
homeCom: DbCommunity,
|
||||||
|
|||||||
@ -1,7 +1,3 @@
|
|||||||
/* eslint-disable @typescript-eslint/restrict-template-expressions */
|
|
||||||
/* eslint-disable new-cap */
|
|
||||||
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
||||||
|
|
||||||
import { getConnection } from '@dbTools/typeorm'
|
import { getConnection } from '@dbTools/typeorm'
|
||||||
import { Community as DbCommunity } from '@entity/Community'
|
import { Community as DbCommunity } from '@entity/Community'
|
||||||
import { PendingTransaction as DbPendingTransaction } from '@entity/PendingTransaction'
|
import { PendingTransaction as DbPendingTransaction } from '@entity/PendingTransaction'
|
||||||
@ -13,14 +9,14 @@ import { PendingTransactionState } from '../enum/PendingTransactionState'
|
|||||||
import { LogError } from '@/server/LogError'
|
import { LogError } from '@/server/LogError'
|
||||||
import { federationLogger as logger } from '@/server/logger'
|
import { federationLogger as logger } from '@/server/logger'
|
||||||
|
|
||||||
import { getLastTransaction } from '@/graphql/util/getLastTransaction'
|
|
||||||
import { TRANSACTIONS_LOCK } from '@/graphql/util/TRANSACTIONS_LOCK'
|
import { TRANSACTIONS_LOCK } from '@/graphql/util/TRANSACTIONS_LOCK'
|
||||||
import { calculateRecipientBalance } from './calculateRecipientBalance'
|
import { getLastTransaction } from '@/graphql/util/getLastTransaction'
|
||||||
import Decimal from 'decimal.js-light'
|
|
||||||
import { CommunityLoggingView } from '@logging/CommunityLogging.view'
|
import { CommunityLoggingView } from '@logging/CommunityLogging.view'
|
||||||
import { UserLoggingView } from '@logging/UserLogging.view'
|
|
||||||
import { PendingTransactionLoggingView } from '@logging/PendingTransactionLogging.view'
|
import { PendingTransactionLoggingView } from '@logging/PendingTransactionLogging.view'
|
||||||
import { TransactionLoggingView } from '@logging/TransactionLogging.view'
|
import { TransactionLoggingView } from '@logging/TransactionLogging.view'
|
||||||
|
import { UserLoggingView } from '@logging/UserLogging.view'
|
||||||
|
import Decimal from 'decimal.js-light'
|
||||||
|
import { calculateRecipientBalance } from './calculateRecipientBalance'
|
||||||
|
|
||||||
export async function settlePendingReceiveTransaction(
|
export async function settlePendingReceiveTransaction(
|
||||||
homeCom: DbCommunity,
|
homeCom: DbCommunity,
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
import { User as DbUser } from '@entity/User'
|
import { User as DbUser } from '@entity/User'
|
||||||
|
|
||||||
import { federationLogger as logger } from '@/server/logger'
|
import { federationLogger as logger } from '@/server/logger'
|
||||||
import { SendCoinsArgs } from '../model/SendCoinsArgs'
|
|
||||||
import { UserLoggingView } from '@logging/UserLogging.view'
|
import { UserLoggingView } from '@logging/UserLogging.view'
|
||||||
import { SendCoinsArgsLoggingView } from '../logger/SendCoinsArgsLogging.view'
|
import { SendCoinsArgsLoggingView } from '../logger/SendCoinsArgsLogging.view'
|
||||||
|
import { SendCoinsArgs } from '../model/SendCoinsArgs'
|
||||||
|
|
||||||
export async function storeForeignUser(args: SendCoinsArgs): Promise<boolean> {
|
export async function storeForeignUser(args: SendCoinsArgs): Promise<boolean> {
|
||||||
if (args.senderCommunityUuid !== null && args.senderUserUuid !== null) {
|
if (args.senderCommunityUuid !== null && args.senderUserUuid !== null) {
|
||||||
|
|||||||
@ -1,9 +1,7 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
import { CONFIG } from '@/config'
|
||||||
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
import { createServer } from '@/server/createServer'
|
||||||
import { createTestClient } from 'apollo-server-testing'
|
|
||||||
import createServer from '@/server/createServer'
|
|
||||||
import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity'
|
import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity'
|
||||||
import CONFIG from '@/config'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
|
|
||||||
let query: any
|
let query: any
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,6 @@
|
|||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
||||||
import { Resolver } from 'type-graphql'
|
import { Resolver } from 'type-graphql'
|
||||||
// eslint-disable-next-line camelcase
|
|
||||||
import { PublicKeyResolver as PublicKeyResolver_1_0 } from '../../1_0/resolver/PublicKeyResolver'
|
import { PublicKeyResolver as PublicKeyResolver_1_0 } from '../../1_0/resolver/PublicKeyResolver'
|
||||||
|
|
||||||
@Resolver()
|
@Resolver()
|
||||||
// eslint-disable-next-line camelcase, @typescript-eslint/no-unused-vars
|
|
||||||
export class PublicKeyResolver extends PublicKeyResolver_1_0 {}
|
export class PublicKeyResolver extends PublicKeyResolver_1_0 {}
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import path from 'path'
|
import path from 'node:path'
|
||||||
// config
|
|
||||||
import CONFIG from '../../config'
|
|
||||||
import { federationLogger as logger } from '@/server/logger'
|
import { federationLogger as logger } from '@/server/logger'
|
||||||
|
// config
|
||||||
|
import { CONFIG } from '../../config'
|
||||||
|
|
||||||
export const getApiResolvers = (): string => {
|
export const getApiResolvers = (): string => {
|
||||||
logger.info(`getApiResolvers...${CONFIG.FEDERATION_API}`)
|
logger.info(`getApiResolvers...${CONFIG.FEDERATION_API}`)
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
|
||||||
import { Decimal } from 'decimal.js-light'
|
import { Decimal } from 'decimal.js-light'
|
||||||
import { GraphQLScalarType, Kind } from 'graphql'
|
import { GraphQLScalarType, Kind } from 'graphql'
|
||||||
|
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
import { GraphQLSchema } from 'graphql'
|
import { GraphQLSchema } from 'graphql'
|
||||||
import { buildSchema } from 'type-graphql'
|
import { buildSchema } from 'type-graphql'
|
||||||
|
|
||||||
// import isAuthorized from './directive/isAuthorized'
|
|
||||||
import { DecimalScalar } from './scalar/Decimal'
|
|
||||||
import { Decimal } from 'decimal.js-light'
|
import { Decimal } from 'decimal.js-light'
|
||||||
import { getApiResolvers } from './api/schema'
|
import { getApiResolvers } from './api/schema'
|
||||||
|
// import isAuthorized from './directive/isAuthorized'
|
||||||
|
import { DecimalScalar } from './scalar/Decimal'
|
||||||
|
|
||||||
const schema = async (): Promise<GraphQLSchema> => {
|
export const schema = async (): Promise<GraphQLSchema> => {
|
||||||
return await buildSchema({
|
return await buildSchema({
|
||||||
resolvers: [getApiResolvers()],
|
resolvers: [getApiResolvers()],
|
||||||
// authChecker: isAuthorized,
|
// authChecker: isAuthorized,
|
||||||
@ -23,5 +23,3 @@ const schema = async (): Promise<GraphQLSchema> => {
|
|||||||
*/
|
*/
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export default schema
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import CONFIG from '@/config'
|
import { CONFIG } from '@/config'
|
||||||
|
import { federationLogger as logger } from '@/server/logger'
|
||||||
import { Community as DbCommunity } from '@entity/Community'
|
import { Community as DbCommunity } from '@entity/Community'
|
||||||
import { Decimal } from 'decimal.js-light'
|
import { Decimal } from 'decimal.js-light'
|
||||||
import { federationLogger as logger } from '@/server/logger'
|
|
||||||
|
|
||||||
export async function checkTradingLevel(homeCom: DbCommunity, amount: Decimal): Promise<boolean> {
|
export async function checkTradingLevel(homeCom: DbCommunity, amount: Decimal): Promise<boolean> {
|
||||||
const tradingLevel = CONFIG.FEDERATION_TRADING_LEVEL
|
const tradingLevel = CONFIG.FEDERATION_TRADING_LEVEL
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { Decimal } from 'decimal.js-light'
|
import { Decimal } from 'decimal.js-light'
|
||||||
|
|
||||||
import { decayFormula, calculateDecay } from './decay'
|
import { calculateDecay, decayFormula } from './decay'
|
||||||
|
|
||||||
describe('utils/decay', () => {
|
describe('utils/decay', () => {
|
||||||
describe('decayFormula', () => {
|
describe('decayFormula', () => {
|
||||||
@ -16,7 +16,7 @@ describe('utils/decay', () => {
|
|||||||
expect(decayFormula(amount, seconds).toString()).toBe('1.000000021964959992727444')
|
expect(decayFormula(amount, seconds).toString()).toBe('1.000000021964959992727444')
|
||||||
})
|
})
|
||||||
// we get pretty close, but not exact here, skipping
|
// we get pretty close, but not exact here, skipping
|
||||||
// eslint-disable-next-line jest/no-disabled-tests
|
|
||||||
it.skip('has correct forward calculation', () => {
|
it.skip('has correct forward calculation', () => {
|
||||||
const amount = new Decimal(1.0).div(
|
const amount = new Decimal(1.0).div(
|
||||||
new Decimal('0.99999997803504048973201202316767079413460520837376'),
|
new Decimal('0.99999997803504048973201202316767079413460520837376'),
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { Decimal } from 'decimal.js-light'
|
import { Decimal } from 'decimal.js-light'
|
||||||
|
|
||||||
|
import { CONFIG } from '@/config'
|
||||||
import { LogError } from '@/server/LogError'
|
import { LogError } from '@/server/LogError'
|
||||||
import CONFIG from '@/config'
|
|
||||||
import { Decay } from '../api/1_0/model/Decay'
|
import { Decay } from '../api/1_0/model/Decay'
|
||||||
|
|
||||||
// TODO: externalize all those definitions and functions into an external decay library
|
// TODO: externalize all those definitions and functions into an external decay library
|
||||||
|
|||||||
@ -24,11 +24,18 @@ const RESERVED_ALIAS = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
export const validateAlias = async (alias: string): Promise<boolean> => {
|
export const validateAlias = async (alias: string): Promise<boolean> => {
|
||||||
if (alias.length < 3) throw new LogError('Given alias is too short', alias)
|
if (alias.length < 3) {
|
||||||
if (alias.length > 20) throw new LogError('Given alias is too long', alias)
|
throw new LogError('Given alias is too short', alias)
|
||||||
if (!alias.match(VALID_ALIAS_REGEX)) throw new LogError('Invalid characters in alias', alias)
|
}
|
||||||
if (RESERVED_ALIAS.includes(alias.toLowerCase()))
|
if (alias.length > 20) {
|
||||||
|
throw new LogError('Given alias is too long', alias)
|
||||||
|
}
|
||||||
|
if (!alias.match(VALID_ALIAS_REGEX)) {
|
||||||
|
throw new LogError('Invalid characters in alias', alias)
|
||||||
|
}
|
||||||
|
if (RESERVED_ALIAS.includes(alias.toLowerCase())) {
|
||||||
throw new LogError('Alias is not allowed', alias)
|
throw new LogError('Alias is not allowed', alias)
|
||||||
|
}
|
||||||
const aliasInUse = await DbUser.find({
|
const aliasInUse = await DbUser.find({
|
||||||
where: { alias: Raw((a) => `LOWER(${a}) = "${alias.toLowerCase()}"`) },
|
where: { alias: Raw((a) => `LOWER(${a}) = "${alias.toLowerCase()}"`) },
|
||||||
})
|
})
|
||||||
|
|||||||
@ -1,22 +1,20 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
||||||
|
|
||||||
import { createServer } from './server/createServer'
|
import { createServer } from './server/createServer'
|
||||||
|
|
||||||
// config
|
// config
|
||||||
import { CONFIG } from './config'
|
import { CONFIG } from './config'
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
// eslint-disable-next-line no-console
|
// biome-ignore lint/suspicious/noConsole: no logger needed fot startup infos
|
||||||
console.log(`FEDERATION_PORT=${CONFIG.FEDERATION_PORT}`)
|
console.log(`FEDERATION_PORT=${CONFIG.FEDERATION_PORT}`)
|
||||||
// eslint-disable-next-line no-console
|
// biome-ignore lint/suspicious/noConsole: no logger needed fot startup infos
|
||||||
console.log(`FEDERATION_API=${CONFIG.FEDERATION_API}`)
|
console.log(`FEDERATION_API=${CONFIG.FEDERATION_API}`)
|
||||||
const { app } = await createServer()
|
const { app } = await createServer()
|
||||||
|
|
||||||
app.listen(CONFIG.FEDERATION_PORT, () => {
|
app.listen(CONFIG.FEDERATION_PORT, () => {
|
||||||
// eslint-disable-next-line no-console
|
// biome-ignore lint/suspicious/noConsole: no logger needed fot startup infos
|
||||||
console.log(`Server is running at http://localhost:${CONFIG.FEDERATION_PORT}`)
|
console.log(`Server is running at http://localhost:${CONFIG.FEDERATION_PORT}`)
|
||||||
if (CONFIG.GRAPHIQL) {
|
if (CONFIG.GRAPHIQL) {
|
||||||
// eslint-disable-next-line no-console
|
// biome-ignore lint/suspicious/noConsole: no logger needed fot startup infos
|
||||||
console.log(
|
console.log(
|
||||||
`GraphIQL available at ${CONFIG.FEDERATION_COMMUNITY_URL}/api/${CONFIG.FEDERATION_API}`,
|
`GraphIQL available at ${CONFIG.FEDERATION_COMMUNITY_URL}/api/${CONFIG.FEDERATION_API}`,
|
||||||
)
|
)
|
||||||
@ -25,7 +23,7 @@ async function main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
main().catch((e) => {
|
main().catch((e) => {
|
||||||
// eslint-disable-next-line no-console
|
// biome-ignore lint/suspicious/noConsole: no logger present
|
||||||
console.error(e)
|
console.error(e)
|
||||||
process.exit(1)
|
process.exit(1)
|
||||||
})
|
})
|
||||||
|
|||||||
@ -1,8 +1,6 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
|
||||||
import { federationLogger as logger } from './logger'
|
import { federationLogger as logger } from './logger'
|
||||||
|
|
||||||
export class LogError extends Error {
|
export class LogError extends Error {
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
||||||
constructor(msg: string, ...details: any[]) {
|
constructor(msg: string, ...details: any[]) {
|
||||||
super(msg)
|
super(msg)
|
||||||
logger.error(msg, ...details)
|
logger.error(msg, ...details)
|
||||||
|
|||||||
@ -5,4 +5,5 @@ const corsOptions = {
|
|||||||
exposedHeaders: ['token'],
|
exposedHeaders: ['token'],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// biome-ignore lint/style/noDefaultExport: <explanation>
|
||||||
export default cors(corsOptions)
|
export default cors(corsOptions)
|
||||||
|
|||||||
@ -3,29 +3,29 @@ import 'reflect-metadata'
|
|||||||
import { ApolloServer } from 'apollo-server-express'
|
import { ApolloServer } from 'apollo-server-express'
|
||||||
import express, { Express } from 'express'
|
import express, { Express } from 'express'
|
||||||
|
|
||||||
// database
|
|
||||||
import connection from '@/typeorm/connection'
|
|
||||||
import { checkDBVersion } from '@/typeorm/DBVersion'
|
import { checkDBVersion } from '@/typeorm/DBVersion'
|
||||||
|
// database
|
||||||
|
import { connection } from '@/typeorm/connection'
|
||||||
|
|
||||||
// server
|
// server
|
||||||
import cors from './cors'
|
import cors from './cors'
|
||||||
// import serverContext from './context'
|
// import serverContext from './context'
|
||||||
import plugins from './plugins'
|
import { plugins } from './plugins'
|
||||||
|
|
||||||
// config
|
// config
|
||||||
import { CONFIG } from '@/config'
|
import { CONFIG } from '@/config'
|
||||||
|
|
||||||
// graphql
|
// graphql
|
||||||
import schema from '@/graphql/schema'
|
import { schema } from '@/graphql/schema'
|
||||||
|
|
||||||
// webhooks
|
// webhooks
|
||||||
// import { elopageWebhook } from '@/webhook/elopage'
|
// import { elopageWebhook } from '@/webhook/elopage'
|
||||||
import { Connection } from '@dbTools/typeorm'
|
import { Connection } from '@dbTools/typeorm'
|
||||||
|
|
||||||
import { apolloLogger } from './logger'
|
|
||||||
import { Logger } from 'log4js'
|
|
||||||
import helmet from 'helmet'
|
|
||||||
import { slowDown } from 'express-slow-down'
|
import { slowDown } from 'express-slow-down'
|
||||||
|
import helmet from 'helmet'
|
||||||
|
import { Logger } from 'log4js'
|
||||||
|
import { apolloLogger } from './logger'
|
||||||
|
|
||||||
// i18n
|
// i18n
|
||||||
// import { i18n } from './localization'
|
// import { i18n } from './localization'
|
||||||
@ -36,7 +36,6 @@ import { slowDown } from 'express-slow-down'
|
|||||||
type ServerDef = { apollo: ApolloServer; app: Express; con: Connection }
|
type ServerDef = { apollo: ApolloServer; app: Express; con: Connection }
|
||||||
|
|
||||||
export const createServer = async (
|
export const createServer = async (
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
||||||
// context: any = serverContext,
|
// context: any = serverContext,
|
||||||
logger: Logger = apolloLogger,
|
logger: Logger = apolloLogger,
|
||||||
// localization: i18n.I18n = i18n,
|
// localization: i18n.I18n = i18n,
|
||||||
@ -112,5 +111,3 @@ export const createServer = async (
|
|||||||
|
|
||||||
return { apollo, app, con }
|
return { apollo, app, con }
|
||||||
}
|
}
|
||||||
|
|
||||||
export default createServer
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
|
import { CONFIG } from '@/config'
|
||||||
import log4js from 'log4js'
|
import log4js from 'log4js'
|
||||||
import CONFIG from '@/config'
|
|
||||||
|
|
||||||
import { readFileSync } from 'fs'
|
import { readFileSync } from 'fs'
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,3 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
|
||||||
|
|
||||||
import clonedeep from 'lodash.clonedeep'
|
import clonedeep from 'lodash.clonedeep'
|
||||||
|
|
||||||
const setHeadersPlugin = {
|
const setHeadersPlugin = {
|
||||||
@ -23,8 +20,12 @@ const setHeadersPlugin = {
|
|||||||
|
|
||||||
const filterVariables = (variables: any) => {
|
const filterVariables = (variables: any) => {
|
||||||
const vars = clonedeep(variables)
|
const vars = clonedeep(variables)
|
||||||
if (vars && vars.password) vars.password = '***'
|
if (vars && vars.password) {
|
||||||
if (vars && vars.passwordNew) vars.passwordNew = '***'
|
vars.password = '***'
|
||||||
|
}
|
||||||
|
if (vars && vars.passwordNew) {
|
||||||
|
vars.passwordNew = '***'
|
||||||
|
}
|
||||||
return vars
|
return vars
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,15 +40,18 @@ ${mutation || query}variables: ${JSON.stringify(filterVariables(variables), null
|
|||||||
return {
|
return {
|
||||||
willSendResponse(requestContext: any) {
|
willSendResponse(requestContext: any) {
|
||||||
if (operationName !== 'IntrospectionQuery') {
|
if (operationName !== 'IntrospectionQuery') {
|
||||||
if (requestContext.context.user) logger.info(`User ID: ${requestContext.context.user.id}`)
|
if (requestContext.context.user) {
|
||||||
|
logger.info(`User ID: ${requestContext.context.user.id}`)
|
||||||
|
}
|
||||||
if (requestContext.response.data) {
|
if (requestContext.response.data) {
|
||||||
logger.info('Response Success!')
|
logger.info('Response Success!')
|
||||||
logger.trace(`Response-Data:
|
logger.trace(`Response-Data:
|
||||||
${JSON.stringify(requestContext.response.data, null, 2)}`)
|
${JSON.stringify(requestContext.response.data, null, 2)}`)
|
||||||
}
|
}
|
||||||
if (requestContext.response.errors)
|
if (requestContext.response.errors) {
|
||||||
logger.error(`Response-Errors:
|
logger.error(`Response-Errors:
|
||||||
${JSON.stringify(requestContext.response.errors, null, 2)}`)
|
${JSON.stringify(requestContext.response.errors, null, 2)}`)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return requestContext
|
return requestContext
|
||||||
},
|
},
|
||||||
@ -55,7 +59,5 @@ ${JSON.stringify(requestContext.response.errors, null, 2)}`)
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
const plugins =
|
export const plugins =
|
||||||
process.env.NODE_ENV === 'development' ? [setHeadersPlugin] : [setHeadersPlugin, logPlugin]
|
process.env.NODE_ENV === 'development' ? [setHeadersPlugin] : [setHeadersPlugin, logPlugin]
|
||||||
|
|
||||||
export default plugins
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import { Migration } from '@entity/Migration'
|
|
||||||
import { federationLogger as logger } from '@/server/logger'
|
import { federationLogger as logger } from '@/server/logger'
|
||||||
|
import { Migration } from '@entity/Migration'
|
||||||
|
|
||||||
const getDBVersion = async (): Promise<string | null> => {
|
const getDBVersion = async (): Promise<string | null> => {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
// TODO This is super weird - since the entities are defined in another project they have their own globals.
|
// TODO This is super weird - since the entities are defined in another project they have their own globals.
|
||||||
// We cannot use our connection here, but must use the external typeorm installation
|
// We cannot use our connection here, but must use the external typeorm installation
|
||||||
import { Connection, createConnection, FileLogger } from '@dbTools/typeorm'
|
import { CONFIG } from '@/config'
|
||||||
import CONFIG from '@/config'
|
import { Connection, FileLogger, createConnection } from '@dbTools/typeorm'
|
||||||
import { entities } from '@entity/index'
|
import { entities } from '@entity/index'
|
||||||
|
|
||||||
const connection = async (): Promise<Connection | null> => {
|
const connection = async (): Promise<Connection | null> => {
|
||||||
@ -25,10 +25,10 @@ const connection = async (): Promise<Connection | null> => {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// eslint-disable-next-line no-console
|
// biome-ignore lint/suspicious/noConsole: no logger present
|
||||||
console.log(error)
|
console.log(error)
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default connection
|
export { connection }
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
||||||
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
||||||
/* eslint-disable @typescript-eslint/restrict-template-expressions */
|
|
||||||
/* eslint-disable @typescript-eslint/no-empty-interface */
|
|
||||||
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
|
||||||
|
|
||||||
import { Decimal } from 'decimal.js-light'
|
import { Decimal } from 'decimal.js-light'
|
||||||
|
|
||||||
@ -28,7 +28,7 @@ interface CustomMatchers<R = unknown> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
// eslint-disable-next-line @typescript-eslint/no-namespace
|
|
||||||
namespace jest {
|
namespace jest {
|
||||||
interface Expect extends CustomMatchers {}
|
interface Expect extends CustomMatchers {}
|
||||||
interface Matchers<R> extends CustomMatchers<R> {}
|
interface Matchers<R> extends CustomMatchers<R> {}
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
/* eslint-disable @typescript-eslint/unbound-method */
|
|
||||||
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
||||||
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
||||||
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
||||||
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
||||||
|
|
||||||
import { entities } from '@entity/index'
|
import { entities } from '@entity/index'
|
||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
|
|||||||
@ -335,6 +335,60 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
||||||
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
||||||
|
|
||||||
|
"@biomejs/biome@1.9.4":
|
||||||
|
version "1.9.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-1.9.4.tgz#89766281cbc3a0aae865a7ff13d6aaffea2842bf"
|
||||||
|
integrity sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==
|
||||||
|
optionalDependencies:
|
||||||
|
"@biomejs/cli-darwin-arm64" "1.9.4"
|
||||||
|
"@biomejs/cli-darwin-x64" "1.9.4"
|
||||||
|
"@biomejs/cli-linux-arm64" "1.9.4"
|
||||||
|
"@biomejs/cli-linux-arm64-musl" "1.9.4"
|
||||||
|
"@biomejs/cli-linux-x64" "1.9.4"
|
||||||
|
"@biomejs/cli-linux-x64-musl" "1.9.4"
|
||||||
|
"@biomejs/cli-win32-arm64" "1.9.4"
|
||||||
|
"@biomejs/cli-win32-x64" "1.9.4"
|
||||||
|
|
||||||
|
"@biomejs/cli-darwin-arm64@1.9.4":
|
||||||
|
version "1.9.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.9.4.tgz#dfa376d23a54a2d8f17133c92f23c1bf2e62509f"
|
||||||
|
integrity sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==
|
||||||
|
|
||||||
|
"@biomejs/cli-darwin-x64@1.9.4":
|
||||||
|
version "1.9.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.9.4.tgz#eafc2ce3849d385fc02238aad1ca4a73395a64d9"
|
||||||
|
integrity sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==
|
||||||
|
|
||||||
|
"@biomejs/cli-linux-arm64-musl@1.9.4":
|
||||||
|
version "1.9.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.9.4.tgz#d780c3e01758fc90f3268357e3f19163d1f84fca"
|
||||||
|
integrity sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==
|
||||||
|
|
||||||
|
"@biomejs/cli-linux-arm64@1.9.4":
|
||||||
|
version "1.9.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.9.4.tgz#8ed1dd0e89419a4b66a47f95aefb8c46ae6041c9"
|
||||||
|
integrity sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==
|
||||||
|
|
||||||
|
"@biomejs/cli-linux-x64-musl@1.9.4":
|
||||||
|
version "1.9.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.9.4.tgz#f36982b966bd671a36671e1de4417963d7db15fb"
|
||||||
|
integrity sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==
|
||||||
|
|
||||||
|
"@biomejs/cli-linux-x64@1.9.4":
|
||||||
|
version "1.9.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-1.9.4.tgz#a0a7f56680c76b8034ddc149dbf398bdd3a462e8"
|
||||||
|
integrity sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==
|
||||||
|
|
||||||
|
"@biomejs/cli-win32-arm64@1.9.4":
|
||||||
|
version "1.9.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.9.4.tgz#e2ef4e0084e76b7e26f0fc887c5ef1265ea56200"
|
||||||
|
integrity sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==
|
||||||
|
|
||||||
|
"@biomejs/cli-win32-x64@1.9.4":
|
||||||
|
version "1.9.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-1.9.4.tgz#4c7afa90e3970213599b4095e62f87e5972b2340"
|
||||||
|
integrity sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==
|
||||||
|
|
||||||
"@cspotcode/source-map-support@^0.8.0":
|
"@cspotcode/source-map-support@^0.8.0":
|
||||||
version "0.8.1"
|
version "0.8.1"
|
||||||
resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"
|
resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user