mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-25 14:28:51 +08:00
66231e0e41
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [oxlint](https://oxc-project.github.io) ([source](https://togithub.com/oxc-project/oxc/tree/HEAD/npm/oxlint)) | [`0.2.14` -> `0.2.17`](https://renovatebot.com/diffs/npm/oxlint/0.2.14/0.2.17) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>oxc-project/oxc (oxlint)</summary> ### [`v0.2.17`](https://togithub.com/oxc-project/oxc/releases/tag/oxlint_v0.2.17): oxlint v0.2.17 [Compare Source](https://togithub.com/oxc-project/oxc/compare/7066d55153ad70f95ae975adc3958c1010f9c5ff...df11d10a2220e9aa7a33d9ab39ed662c2ba6fdb5) ##### What's Changed - feat(linter): eslint-plugin-jest/prefer-lowercase-title by [@​eryue0220](https://togithub.com/eryue0220) in [https://github.com/oxc-project/oxc/pull/2911](https://togithub.com/oxc-project/oxc/pull/2911) - feat(linter): typescript-eslint/consistent-type-definitions by [@​todor-a](https://togithub.com/todor-a) in [https://github.com/oxc-project/oxc/pull/2885](https://togithub.com/oxc-project/oxc/pull/2885) - fix(cli): fix `oxlint --format json` yields 0 files to lint by [@​Boshen](https://togithub.com/Boshen) in [https://github.com/oxc-project/oxc/pull/2940](https://togithub.com/oxc-project/oxc/pull/2940) - fix(cli): if format is json do not print summary information ([#​2899](https://togithub.com/oxc-project/oxc/issues/2899)) by [@​kalvenschraut](https://togithub.com/kalvenschraut) in [https://github.com/oxc-project/oxc/pull/2925](https://togithub.com/oxc-project/oxc/pull/2925) - fix(linter): import/no-cycle ignore type-only imports by [@​JohnDaly](https://togithub.com/JohnDaly) in [https://github.com/oxc-project/oxc/pull/2924](https://togithub.com/oxc-project/oxc/pull/2924) - refactor(semantic/jsdoc): Rework JSDoc struct for better Span handling by [@​leaysgur](https://togithub.com/leaysgur) in [https://github.com/oxc-project/oxc/pull/2917](https://togithub.com/oxc-project/oxc/pull/2917) ##### New Contributors - [@​bradzacher](https://togithub.com/bradzacher) made their first contribution in [https://github.com/oxc-project/oxc/pull/2938](https://togithub.com/oxc-project/oxc/pull/2938) **Full Changelog**: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.16...oxlint_v0.2.17 ### [`v0.2.16`](https://togithub.com/oxc-project/oxc/releases/tag/oxlint_v0.2.16): oxlint v0.2.16 [Compare Source](https://togithub.com/oxc-project/oxc/compare/e7307ed23ca9b0707586b6bf4220cafb221ae86e...7066d55153ad70f95ae975adc3958c1010f9c5ff) #### What's Changed - feat(linter): [@​typescript-eslint/prefer-for-of](https://togithub.com/typescript-eslint/prefer-for-of) by [@​charnog](https://togithub.com/charnog) in [https://github.com/oxc-project/oxc/pull/2789](https://togithub.com/oxc-project/oxc/pull/2789) - feat(linter): Implement jsdoc/check-access by [@​leaysgur](https://togithub.com/leaysgur) in [https://github.com/oxc-project/oxc/pull/2642](https://togithub.com/oxc-project/oxc/pull/2642) - feat(linter): Implement jsdoc/empty-tags by [@​leaysgur](https://togithub.com/leaysgur) in [https://github.com/oxc-project/oxc/pull/2893](https://togithub.com/oxc-project/oxc/pull/2893) - feat(linter): eslint-plugin-jest/prefer-mock-promise-sorthand by [@​eryue0220](https://togithub.com/eryue0220) in [https://github.com/oxc-project/oxc/pull/2864](https://togithub.com/oxc-project/oxc/pull/2864) - feat(linter/import): Add `ignoreTypes` option for the `import/no-cycle` rule by [@​JohnDaly](https://togithub.com/JohnDaly) in [https://github.com/oxc-project/oxc/pull/2905](https://togithub.com/oxc-project/oxc/pull/2905) - fix(ast): `FinallyClause` won't get visited as `BlockStatement` anymore. by [@​rzvxa](https://togithub.com/rzvxa) in [https://github.com/oxc-project/oxc/pull/2881](https://togithub.com/oxc-project/oxc/pull/2881) - fix(linter): handle self closing script tags in astro partial loader ([#​2017](https://togithub.com/oxc-project/oxc/issues/2017)) by [@​kalvenschraut](https://togithub.com/kalvenschraut) in [https://github.com/oxc-project/oxc/pull/2907](https://togithub.com/oxc-project/oxc/pull/2907) - fix(linter): svelte partial loader handle generics ([#​2875](https://togithub.com/oxc-project/oxc/issues/2875)) by [@​kalvenschraut](https://togithub.com/kalvenschraut) in [https://github.com/oxc-project/oxc/pull/2906](https://togithub.com/oxc-project/oxc/pull/2906) #### New Contributors - [@​charnog](https://togithub.com/charnog) made their first contribution in [https://github.com/oxc-project/oxc/pull/2789](https://togithub.com/oxc-project/oxc/pull/2789) - [@​kalvenschraut](https://togithub.com/kalvenschraut) made their first contribution in [https://github.com/oxc-project/oxc/pull/2906](https://togithub.com/oxc-project/oxc/pull/2906) - [@​JohnDaly](https://togithub.com/JohnDaly) made their first contribution in [https://github.com/oxc-project/oxc/pull/2905](https://togithub.com/oxc-project/oxc/pull/2905) **Full Changelog**: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.15...oxlint_v0.2.16 ### [`v0.2.15`](https://togithub.com/oxc-project/oxc/releases/tag/oxlint_v0.2.15): oxlint v0.2.15 [Compare Source](https://togithub.com/oxc-project/oxc/compare/b1343d7bcbd490105583b561946f057ac91e40cf...e7307ed23ca9b0707586b6bf4220cafb221ae86e) #### What's Changed - feat(linter): default_param_last by [@​JoSeBu1](https://togithub.com/JoSeBu1) in [https://github.com/oxc-project/oxc/pull/2756](https://togithub.com/oxc-project/oxc/pull/2756) - feat(linter): eslint-plugin-jest/no-untyped-mock-factory by [@​eryue0220](https://togithub.com/eryue0220) in [https://github.com/oxc-project/oxc/pull/2807](https://togithub.com/oxc-project/oxc/pull/2807) - feat(linter): eslint-plugin-jest/prefer-comparison-matcher by [@​eryue0220](https://togithub.com/eryue0220) in [https://github.com/oxc-project/oxc/pull/2806](https://togithub.com/oxc-project/oxc/pull/2806) - feat(linter): eslint-plugin-react checked-requires-onchange-or-readonly by [@​keita-hino](https://togithub.com/keita-hino) in [https://github.com/oxc-project/oxc/pull/2754](https://togithub.com/oxc-project/oxc/pull/2754) - feat(linter): eslint/no-iterator by [@​JoSeBu1](https://togithub.com/JoSeBu1) in [https://github.com/oxc-project/oxc/pull/2758](https://togithub.com/oxc-project/oxc/pull/2758) - feat(linter): fallback to the default tsconfig path by [@​Dunqing](https://togithub.com/Dunqing) in [https://github.com/oxc-project/oxc/pull/2842](https://togithub.com/oxc-project/oxc/pull/2842) - feat(linter): no_script_url by [@​JoSeBu1](https://togithub.com/JoSeBu1) in [https://github.com/oxc-project/oxc/pull/2761](https://togithub.com/oxc-project/oxc/pull/2761) - feat(linter/import) check deep namespace in namespace rule by [@​Dunqing](https://togithub.com/Dunqing) in [https://github.com/oxc-project/oxc/pull/2805](https://togithub.com/oxc-project/oxc/pull/2805) - feat(linter/import) check module import in no_duplicates by [@​Dunqing](https://togithub.com/Dunqing) in [https://github.com/oxc-project/oxc/pull/2771](https://togithub.com/oxc-project/oxc/pull/2771) - feat(linter/import) check type import in no_duplicates by [@​Dunqing](https://togithub.com/Dunqing) in [https://github.com/oxc-project/oxc/pull/2777](https://togithub.com/oxc-project/oxc/pull/2777) - feat(linter/import) support allow_computed option in namespace by [@​Dunqing](https://togithub.com/Dunqing) in [https://github.com/oxc-project/oxc/pull/2840](https://togithub.com/oxc-project/oxc/pull/2840) - feat(linter/import) support check re-export in named by [@​Dunqing](https://togithub.com/Dunqing) in [https://github.com/oxc-project/oxc/pull/2769](https://togithub.com/oxc-project/oxc/pull/2769) - feat(linter/import): ignore type-only imports and exports in no_unresolved by [@​Dunqing](https://togithub.com/Dunqing) in [https://github.com/oxc-project/oxc/pull/2849](https://togithub.com/oxc-project/oxc/pull/2849) - fix(linter/import): false positive for indirect export in namespace by [@​Dunqing](https://togithub.com/Dunqing) in [https://github.com/oxc-project/oxc/pull/2862](https://togithub.com/oxc-project/oxc/pull/2862) - fix(linter/import): ignore export declaration in no-duplicates by [@​Dunqing](https://togithub.com/Dunqing) in [https://github.com/oxc-project/oxc/pull/2863](https://togithub.com/oxc-project/oxc/pull/2863) - fix(linter/max-lines): only report codes that exceed the line limit by [@​mysteryven](https://togithub.com/mysteryven) in [https://github.com/oxc-project/oxc/pull/2778](https://togithub.com/oxc-project/oxc/pull/2778) - fix(parser): add support for empty module declaration by [@​rzvxa](https://togithub.com/rzvxa) in [https://github.com/oxc-project/oxc/pull/2834](https://togithub.com/oxc-project/oxc/pull/2834) #### New Contributors - [@​rzvxa](https://togithub.com/rzvxa) made their first contribution in [https://github.com/oxc-project/oxc/pull/2764](https://togithub.com/oxc-project/oxc/pull/2764) **Full Changelog**: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.14...oxlint_v0.2.15 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNTMuMiIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
343 lines
6.8 KiB
TypeScript
343 lines
6.8 KiB
TypeScript
import type { ApolloDriverConfig } from '@nestjs/apollo';
|
|
import SMTPTransport from 'nodemailer/lib/smtp-transport';
|
|
|
|
import type { LeafPaths } from '../utils/types';
|
|
import type { AFFiNEStorageConfig } from './storage';
|
|
|
|
declare global {
|
|
// eslint-disable-next-line @typescript-eslint/no-namespace
|
|
namespace globalThis {
|
|
// eslint-disable-next-line no-var
|
|
var AFFiNE: AFFiNEConfig;
|
|
}
|
|
}
|
|
|
|
export type EnvConfigType = 'string' | 'int' | 'float' | 'boolean';
|
|
export type ServerFlavor = 'allinone' | 'graphql' | 'sync';
|
|
export type AFFINE_ENV = 'dev' | 'beta' | 'production';
|
|
export type NODE_ENV = 'development' | 'test' | 'production';
|
|
|
|
export enum DeploymentType {
|
|
Affine = 'affine',
|
|
Selfhosted = 'selfhosted',
|
|
}
|
|
|
|
export type ConfigPaths = LeafPaths<
|
|
Omit<
|
|
AFFiNEConfig,
|
|
| 'ENV_MAP'
|
|
| 'version'
|
|
| 'type'
|
|
| 'isSelfhosted'
|
|
| 'flavor'
|
|
| 'env'
|
|
| 'affine'
|
|
| 'deploy'
|
|
| 'node'
|
|
| 'baseUrl'
|
|
| 'origin'
|
|
>,
|
|
'',
|
|
'.....'
|
|
>;
|
|
|
|
/**
|
|
* All Configurations that would control AFFiNE server behaviors
|
|
*
|
|
*/
|
|
export interface AFFiNEConfig {
|
|
ENV_MAP: Record<string, ConfigPaths | [ConfigPaths, EnvConfigType?]>;
|
|
/**
|
|
* Server Identity
|
|
*/
|
|
serverId: string;
|
|
|
|
/**
|
|
* Name may show on the UI
|
|
*/
|
|
serverName: string;
|
|
|
|
/**
|
|
* System version
|
|
*/
|
|
readonly version: string;
|
|
|
|
/**
|
|
* Deployment type, AFFiNE Cloud, or Selfhosted
|
|
*/
|
|
get type(): DeploymentType;
|
|
|
|
/**
|
|
* Fast detect whether currently deployed in a selfhosted environment
|
|
*/
|
|
get isSelfhosted(): boolean;
|
|
|
|
/**
|
|
* Server flavor
|
|
*/
|
|
get flavor(): {
|
|
type: string;
|
|
graphql: boolean;
|
|
sync: boolean;
|
|
};
|
|
|
|
/**
|
|
* Application secrets for authentication and data encryption
|
|
*/
|
|
secrets: {
|
|
/**
|
|
* Application public key
|
|
*
|
|
*/
|
|
publicKey: string;
|
|
/**
|
|
* Application private key
|
|
*
|
|
*/
|
|
privateKey: string;
|
|
};
|
|
|
|
/**
|
|
* Deployment environment
|
|
*/
|
|
readonly AFFINE_ENV: AFFINE_ENV;
|
|
/**
|
|
* alias to `process.env.NODE_ENV`
|
|
*
|
|
* @default 'development'
|
|
* @env NODE_ENV
|
|
*/
|
|
readonly NODE_ENV: NODE_ENV;
|
|
|
|
/**
|
|
* fast AFFiNE environment judge
|
|
*/
|
|
get affine(): {
|
|
canary: boolean;
|
|
beta: boolean;
|
|
stable: boolean;
|
|
};
|
|
/**
|
|
* fast environment judge
|
|
*/
|
|
get node(): {
|
|
prod: boolean;
|
|
dev: boolean;
|
|
test: boolean;
|
|
};
|
|
|
|
get deploy(): boolean;
|
|
|
|
/**
|
|
* Whether the server is hosted on a ssl enabled domain
|
|
*/
|
|
https: boolean;
|
|
/**
|
|
* where the server get deployed.
|
|
*
|
|
* @default 'localhost'
|
|
* @env AFFINE_SERVER_HOST
|
|
*/
|
|
host: string;
|
|
/**
|
|
* which port the server will listen on
|
|
*
|
|
* @default 3010
|
|
* @env AFFINE_SERVER_PORT
|
|
*/
|
|
port: number;
|
|
/**
|
|
* subpath where the server get deployed if there is.
|
|
*
|
|
* @default '' // empty string
|
|
* @env AFFINE_SERVER_SUB_PATH
|
|
*/
|
|
path: string;
|
|
|
|
/**
|
|
* Readonly property `baseUrl` is the full url of the server consists of `https://HOST:PORT/PATH`.
|
|
*
|
|
* if `host` is not `localhost` then the port will be ignored
|
|
*/
|
|
get baseUrl(): string;
|
|
|
|
/**
|
|
* Readonly property `origin` is domain origin in the form of `https://HOST:PORT` without subpath.
|
|
*
|
|
* if `host` is not `localhost` then the port will be ignored
|
|
*/
|
|
get origin(): string;
|
|
|
|
/**
|
|
* the database config
|
|
*/
|
|
db: {
|
|
url: string;
|
|
};
|
|
|
|
/**
|
|
* the apollo driver config
|
|
*/
|
|
graphql: ApolloDriverConfig;
|
|
/**
|
|
* app features flag
|
|
*/
|
|
featureFlags: {
|
|
earlyAccessPreview: boolean;
|
|
syncClientVersionCheck: boolean;
|
|
};
|
|
|
|
/**
|
|
* Configuration for Object Storage, which defines how blobs and avatar assets are stored.
|
|
*/
|
|
storage: AFFiNEStorageConfig;
|
|
|
|
/**
|
|
* Rate limiter config
|
|
*/
|
|
rateLimiter: {
|
|
/**
|
|
* How long each request will be throttled (seconds)
|
|
* @default 60
|
|
* @env THROTTLE_TTL
|
|
*/
|
|
ttl: number;
|
|
/**
|
|
* How many requests can be made in the given time frame
|
|
* @default 120
|
|
* @env THROTTLE_LIMIT
|
|
*/
|
|
limit: number;
|
|
};
|
|
|
|
/**
|
|
* authentication config
|
|
*/
|
|
auth: {
|
|
/**
|
|
* The minimum and maximum length of the password when registering new users
|
|
*
|
|
* @default [8,32]
|
|
*/
|
|
password: {
|
|
/**
|
|
* The minimum length of the password
|
|
*
|
|
* @default 8
|
|
*/
|
|
minLength: number;
|
|
/**
|
|
* The maximum length of the password
|
|
*
|
|
* @default 32
|
|
*/
|
|
maxLength: number;
|
|
};
|
|
session: {
|
|
/**
|
|
* Application auth expiration time in seconds
|
|
*
|
|
* @default 15 days
|
|
*/
|
|
ttl: number;
|
|
};
|
|
|
|
/**
|
|
* Application access token config
|
|
*/
|
|
accessToken: {
|
|
/**
|
|
* Application access token expiration time in seconds
|
|
*
|
|
* @default 7 days
|
|
*/
|
|
ttl: number;
|
|
/**
|
|
* Application refresh token expiration time in seconds
|
|
*
|
|
* @default 30 days
|
|
*/
|
|
refreshTokenTtl: number;
|
|
};
|
|
captcha: {
|
|
/**
|
|
* whether to enable captcha
|
|
*/
|
|
enable: boolean;
|
|
turnstile: {
|
|
/**
|
|
* Cloudflare Turnstile CAPTCHA secret
|
|
* default value is demo api key, witch always return success
|
|
*/
|
|
secret: string;
|
|
};
|
|
challenge: {
|
|
/**
|
|
* challenge bits length
|
|
* default value is 20, which can resolve in 0.5-3 second in M2 MacBook Air in single thread
|
|
* @default 20
|
|
*/
|
|
bits: number;
|
|
};
|
|
};
|
|
};
|
|
|
|
/**
|
|
* Configurations for mail service used to post auth or bussiness mails.
|
|
*
|
|
* @see https://nodemailer.com/smtp/
|
|
*/
|
|
mailer?: SMTPTransport.Options;
|
|
|
|
doc: {
|
|
manager: {
|
|
/**
|
|
* Whether auto merge updates into doc snapshot.
|
|
*/
|
|
enableUpdateAutoMerging: boolean;
|
|
|
|
/**
|
|
* How often the [DocManager] will start a new turn of merging pending updates into doc snapshot.
|
|
*
|
|
* This is not the latency a new joint client will take to see the latest doc,
|
|
* but the buffer time we introduced to reduce the load of our service.
|
|
*
|
|
* in {ms}
|
|
*/
|
|
updatePollInterval: number;
|
|
|
|
/**
|
|
* The maximum number of updates that will be pulled from the server at once.
|
|
* Existing for avoiding the server to be overloaded when there are too many updates for one doc.
|
|
*/
|
|
maxUpdatesPullCount: number;
|
|
|
|
/**
|
|
* Use `y-octo` to merge updates at the same time when merging using Yjs.
|
|
*
|
|
* This is an experimental feature, and aimed to check the correctness of JwstCodec.
|
|
*/
|
|
experimentalMergeWithYOcto: boolean;
|
|
};
|
|
history: {
|
|
/**
|
|
* How long the buffer time of creating a new history snapshot when doc get updated.
|
|
*
|
|
* in {ms}
|
|
*/
|
|
interval: number;
|
|
};
|
|
};
|
|
|
|
metrics: {
|
|
enabled: boolean;
|
|
};
|
|
|
|
telemetry: {
|
|
enabled: boolean;
|
|
token: string;
|
|
};
|
|
}
|
|
|
|
export * from './storage';
|