feat: init @affine/env (#1243)
This commit is contained in:
@@ -61,6 +61,7 @@ const nextConfig = {
|
|||||||
'@affine/component',
|
'@affine/component',
|
||||||
'@affine/datacenter',
|
'@affine/datacenter',
|
||||||
'@affine/i18n',
|
'@affine/i18n',
|
||||||
|
'@affine/env',
|
||||||
],
|
],
|
||||||
publicRuntimeConfig: {
|
publicRuntimeConfig: {
|
||||||
PROJECT_NAME: process.env.npm_package_name,
|
PROJECT_NAME: process.env.npm_package_name,
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@affine/component": "workspace:*",
|
"@affine/component": "workspace:*",
|
||||||
"@affine/datacenter": "workspace:*",
|
"@affine/datacenter": "workspace:*",
|
||||||
|
"@affine/env": "workspace:*",
|
||||||
"@affine/i18n": "workspace:*",
|
"@affine/i18n": "workspace:*",
|
||||||
"@blocksuite/blocks": "0.4.1-20230220214107-0a354de",
|
"@blocksuite/blocks": "0.4.1-20230220214107-0a354de",
|
||||||
"@blocksuite/editor": "0.4.1-20230220214107-0a354de",
|
"@blocksuite/editor": "0.4.1-20230220214107-0a354de",
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
|
import { config } from '@affine/env';
|
||||||
|
|
||||||
import { BlockSuiteWorkspace, Provider } from '../shared';
|
import { BlockSuiteWorkspace, Provider } from '../shared';
|
||||||
import { config } from '../shared/env';
|
|
||||||
import {
|
import {
|
||||||
createBroadCastChannelProvider,
|
createBroadCastChannelProvider,
|
||||||
createIndexedDBProvider,
|
createIndexedDBProvider,
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { config } from '@affine/env';
|
||||||
import { BlockHub } from '@blocksuite/blocks';
|
import { BlockHub } from '@blocksuite/blocks';
|
||||||
import { EditorContainer } from '@blocksuite/editor';
|
import { EditorContainer } from '@blocksuite/editor';
|
||||||
import type { Page } from '@blocksuite/store';
|
import type { Page } from '@blocksuite/store';
|
||||||
@@ -5,7 +6,6 @@ import { assertExists } from '@blocksuite/store';
|
|||||||
import { useEffect, useRef } from 'react';
|
import { useEffect, useRef } from 'react';
|
||||||
|
|
||||||
import { BlockSuiteWorkspace } from '../../../shared';
|
import { BlockSuiteWorkspace } from '../../../shared';
|
||||||
import { config } from '../../../shared/env';
|
|
||||||
|
|
||||||
export type EditorProps = {
|
export type EditorProps = {
|
||||||
blockSuiteWorkspace: BlockSuiteWorkspace;
|
blockSuiteWorkspace: BlockSuiteWorkspace;
|
||||||
@@ -81,7 +81,6 @@ export const BlockSuiteEditor = (props: EditorProps) => {
|
|||||||
page.resetHistory();
|
page.resetHistory();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.exposeInternal) {
|
if (config.exposeInternal) {
|
||||||
globalThis.currentBlockSuiteWorkspace = props.blockSuiteWorkspace;
|
globalThis.currentBlockSuiteWorkspace = props.blockSuiteWorkspace;
|
||||||
globalThis.currentPage = page;
|
globalThis.currentPage = page;
|
||||||
|
|||||||
@@ -1,26 +1,20 @@
|
|||||||
|
import { getEnvironment } from '@affine/env';
|
||||||
import { Trans, useTranslation } from '@affine/i18n';
|
import { Trans, useTranslation } from '@affine/i18n';
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
|
|
||||||
import { getIsMobile } from '../../../utils/get-is-mobile';
|
|
||||||
|
|
||||||
// Inspire by https://stackoverflow.com/a/4900484/8415727
|
|
||||||
const getChromeVersion = () => {
|
|
||||||
const raw = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);
|
|
||||||
return raw ? parseInt(raw[2], 10) : false;
|
|
||||||
};
|
|
||||||
const getIsChrome = () => {
|
|
||||||
return (
|
|
||||||
/Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor)
|
|
||||||
);
|
|
||||||
};
|
|
||||||
const minimumChromeVersion = 102;
|
const minimumChromeVersion = 102;
|
||||||
|
|
||||||
export const shouldShowWarning = () => {
|
export const shouldShowWarning = () => {
|
||||||
return (
|
const env = getEnvironment();
|
||||||
!window.CLIENT_APP &&
|
if (!env.isBrowser) {
|
||||||
!getIsMobile() &&
|
// disable in SSR
|
||||||
(!getIsChrome() || getChromeVersion() < minimumChromeVersion)
|
return false;
|
||||||
);
|
}
|
||||||
|
if (env.isChrome) {
|
||||||
|
return env.chromeVersion < minimumChromeVersion;
|
||||||
|
} else {
|
||||||
|
return !env.isMobile;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const OSWarningMessage: React.FC = () => {
|
export const OSWarningMessage: React.FC = () => {
|
||||||
@@ -28,8 +22,11 @@ export const OSWarningMessage: React.FC = () => {
|
|||||||
const [notChrome, setNotChrome] = useState(false);
|
const [notChrome, setNotChrome] = useState(false);
|
||||||
const [notGoodVersion, setNotGoodVersion] = useState(false);
|
const [notGoodVersion, setNotGoodVersion] = useState(false);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setNotChrome(getIsChrome());
|
const env = getEnvironment();
|
||||||
setNotGoodVersion(getChromeVersion() < minimumChromeVersion);
|
setNotChrome(env.isBrowser && !env.isChrome);
|
||||||
|
setNotGoodVersion(
|
||||||
|
env.isBrowser && env.isChrome && env.chromeVersion < minimumChromeVersion
|
||||||
|
);
|
||||||
}, []);
|
}, []);
|
||||||
if (notChrome) {
|
if (notChrome) {
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { Modal, ModalWrapper } from '@affine/component';
|
import { Modal, ModalWrapper } from '@affine/component';
|
||||||
|
import { getEnvironment } from '@affine/env';
|
||||||
import { Command } from 'cmdk';
|
import { Command } from 'cmdk';
|
||||||
import { NextRouter } from 'next/router';
|
import { NextRouter } from 'next/router';
|
||||||
import React, {
|
import React, {
|
||||||
@@ -10,7 +11,6 @@ import React, {
|
|||||||
} from 'react';
|
} from 'react';
|
||||||
|
|
||||||
import { BlockSuiteWorkspace } from '../../../shared';
|
import { BlockSuiteWorkspace } from '../../../shared';
|
||||||
import { getUaHelper } from '../../../utils/useragent';
|
|
||||||
import { Footer } from './Footer';
|
import { Footer } from './Footer';
|
||||||
import { Input } from './Input';
|
import { Input } from './Input';
|
||||||
import { PublishedResults } from './PublishedResults';
|
import { PublishedResults } from './PublishedResults';
|
||||||
@@ -24,7 +24,8 @@ import {
|
|||||||
} from './style';
|
} from './style';
|
||||||
|
|
||||||
const isMac = () => {
|
const isMac = () => {
|
||||||
return getUaHelper().isMacOs;
|
const env = getEnvironment();
|
||||||
|
return env.isBrowser && env.isMacOs;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type QuickSearchModalProps = {
|
export type QuickSearchModalProps = {
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ import {
|
|||||||
MuiClickAwayListener,
|
MuiClickAwayListener,
|
||||||
MuiSlide,
|
MuiSlide,
|
||||||
} from '@affine/component';
|
} from '@affine/component';
|
||||||
|
import { getEnvironment } from '@affine/env';
|
||||||
import { useTranslation } from '@affine/i18n';
|
import { useTranslation } from '@affine/i18n';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
|
|
||||||
import { getUaHelper } from '../../../utils/useragent';
|
|
||||||
import {
|
import {
|
||||||
useMacKeyboardShortcuts,
|
useMacKeyboardShortcuts,
|
||||||
useMacMarkdownShortcuts,
|
useMacMarkdownShortcuts,
|
||||||
@@ -27,7 +27,8 @@ type ModalProps = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const checkIsMac = () => {
|
const checkIsMac = () => {
|
||||||
return getUaHelper().isMacOs;
|
const env = getEnvironment();
|
||||||
|
return env.isBrowser && env.isMacOs;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const ShortcutsModal = ({ open, onClose }: ModalProps) => {
|
export const ShortcutsModal = ({ open, onClose }: ModalProps) => {
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { Workspace } from '@affine/datacenter';
|
import { Workspace } from '@affine/datacenter';
|
||||||
|
import { config } from '@affine/env';
|
||||||
import { nanoid } from '@blocksuite/store';
|
import { nanoid } from '@blocksuite/store';
|
||||||
import { useCallback, useMemo, useSyncExternalStore } from 'react';
|
import { useCallback, useMemo, useSyncExternalStore } from 'react';
|
||||||
import useSWR from 'swr';
|
import useSWR from 'swr';
|
||||||
@@ -10,7 +11,6 @@ import { WorkspacePlugins } from '../plugins';
|
|||||||
import { QueryKey } from '../plugins/affine/fetcher';
|
import { QueryKey } from '../plugins/affine/fetcher';
|
||||||
import { kStoreKey } from '../plugins/local';
|
import { kStoreKey } from '../plugins/local';
|
||||||
import { LocalWorkspace, RemWorkspace, RemWorkspaceFlavour } from '../shared';
|
import { LocalWorkspace, RemWorkspace, RemWorkspaceFlavour } from '../shared';
|
||||||
import { config } from '../shared/env';
|
|
||||||
import { createEmptyBlockSuiteWorkspace } from '../utils';
|
import { createEmptyBlockSuiteWorkspace } from '../utils';
|
||||||
|
|
||||||
// fixme(himself65): refactor with jotai atom using async
|
// fixme(himself65): refactor with jotai atom using async
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import '@blocksuite/editor/themes/affine.css';
|
import '@blocksuite/editor/themes/affine.css';
|
||||||
import '../styles/globals.css';
|
import '../styles/globals.css';
|
||||||
|
|
||||||
|
import { config, setupGlobal } from '@affine/env';
|
||||||
import { createI18n, I18nextProvider } from '@affine/i18n';
|
import { createI18n, I18nextProvider } from '@affine/i18n';
|
||||||
import createCache from '@emotion/cache';
|
import createCache from '@emotion/cache';
|
||||||
import { CacheProvider } from '@emotion/react';
|
import { CacheProvider } from '@emotion/react';
|
||||||
@@ -20,7 +21,8 @@ import { AffineSWRConfigProvider } from '../providers/AffineSWRConfigProvider';
|
|||||||
import { ModalProvider } from '../providers/ModalProvider';
|
import { ModalProvider } from '../providers/ModalProvider';
|
||||||
import { ThemeProvider } from '../providers/ThemeProvider';
|
import { ThemeProvider } from '../providers/ThemeProvider';
|
||||||
import { NextPageWithLayout } from '../shared';
|
import { NextPageWithLayout } from '../shared';
|
||||||
import { config } from '../shared/env';
|
|
||||||
|
setupGlobal();
|
||||||
|
|
||||||
type AppPropsWithLayout = AppProps & {
|
type AppPropsWithLayout = AppProps & {
|
||||||
Component: NextPageWithLayout;
|
Component: NextPageWithLayout;
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { config } from '@affine/env';
|
||||||
import { assertEquals, nanoid } from '@blocksuite/store';
|
import { assertEquals, nanoid } from '@blocksuite/store';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { IndexeddbPersistence } from 'y-indexeddb';
|
import { IndexeddbPersistence } from 'y-indexeddb';
|
||||||
@@ -12,7 +13,6 @@ import {
|
|||||||
LocalWorkspace,
|
LocalWorkspace,
|
||||||
RemWorkspaceFlavour,
|
RemWorkspaceFlavour,
|
||||||
} from '../../shared';
|
} from '../../shared';
|
||||||
import { config } from '../../shared/env';
|
|
||||||
import { createEmptyBlockSuiteWorkspace } from '../../utils';
|
import { createEmptyBlockSuiteWorkspace } from '../../utils';
|
||||||
import { WorkspacePlugin } from '..';
|
import { WorkspacePlugin } from '..';
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,7 @@ import {
|
|||||||
getApis,
|
getApis,
|
||||||
GoogleAuth,
|
GoogleAuth,
|
||||||
} from '@affine/datacenter';
|
} from '@affine/datacenter';
|
||||||
|
import { config } from '@affine/env';
|
||||||
import { config } from './env';
|
|
||||||
|
|
||||||
let prefixUrl = '/';
|
let prefixUrl = '/';
|
||||||
if (typeof window === 'undefined') {
|
if (typeof window === 'undefined') {
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
import getConfig from 'next/config';
|
|
||||||
|
|
||||||
import { PublicRuntimeConfig, publicRuntimeConfigSchema } from '../types';
|
|
||||||
|
|
||||||
const { publicRuntimeConfig: config } = getConfig() as {
|
|
||||||
publicRuntimeConfig: PublicRuntimeConfig;
|
|
||||||
};
|
|
||||||
|
|
||||||
publicRuntimeConfigSchema.parse(config);
|
|
||||||
|
|
||||||
const printBuildInfo = () => {
|
|
||||||
console.group('Build info');
|
|
||||||
console.log('Project:', config.PROJECT_NAME);
|
|
||||||
console.log(
|
|
||||||
'Build date:',
|
|
||||||
config.BUILD_DATE ? new Date(config.BUILD_DATE).toLocaleString() : 'Unknown'
|
|
||||||
);
|
|
||||||
console.log('Editor Version:', config.editorVersion);
|
|
||||||
|
|
||||||
console.log('Version:', config.gitVersion);
|
|
||||||
console.log(
|
|
||||||
'AFFiNE is an open source project, you can view its source code on GitHub!'
|
|
||||||
);
|
|
||||||
console.log(`https://github.com/toeverything/AFFiNE/tree/${config.hash}`);
|
|
||||||
console.groupEnd();
|
|
||||||
};
|
|
||||||
|
|
||||||
function setWindowEditorVersion() {
|
|
||||||
// @ts-ignore
|
|
||||||
globalThis.__editoVersion = config.editorVersion;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare global {
|
|
||||||
// eslint-disable-next-line no-var
|
|
||||||
var __affineSetupEnv: boolean | undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof window !== 'undefined' && !globalThis.__affineSetupEnv) {
|
|
||||||
printBuildInfo();
|
|
||||||
setWindowEditorVersion();
|
|
||||||
globalThis.__affineSetupEnv = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
export { config };
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
import { z } from 'zod';
|
|
||||||
|
|
||||||
export const publicRuntimeConfigSchema = z.object({
|
|
||||||
PROJECT_NAME: z.string(),
|
|
||||||
BUILD_DATE: z.string(),
|
|
||||||
gitVersion: z.string(),
|
|
||||||
hash: z.string(),
|
|
||||||
serverAPI: z.string(),
|
|
||||||
editorVersion: z.string(),
|
|
||||||
enableIndexedDBProvider: z.boolean(),
|
|
||||||
enableBroadCastChannelProvider: z.boolean(),
|
|
||||||
prefetchWorkspace: z.boolean(),
|
|
||||||
// expose internal api to globalThis, **development only**
|
|
||||||
exposeInternal: z.boolean(),
|
|
||||||
});
|
|
||||||
|
|
||||||
export type PublicRuntimeConfig = z.infer<typeof publicRuntimeConfigSchema>;
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
/* eslint-disable no-useless-escape */
|
|
||||||
// Inspire by https://stackoverflow.com/a/11381730/8415727
|
|
||||||
export function isMobile(userAgent: string) {
|
|
||||||
return !!(
|
|
||||||
/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(
|
|
||||||
userAgent
|
|
||||||
) ||
|
|
||||||
/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(
|
|
||||||
userAgent.substr(0, 4)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export const getIsMobile = function () {
|
|
||||||
return isMobile(
|
|
||||||
navigator?.userAgent || navigator?.vendor || (window as any)?.opera
|
|
||||||
);
|
|
||||||
};
|
|
||||||
12
packages/env/package.json
vendored
Normal file
12
packages/env/package.json
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"name": "@affine/env",
|
||||||
|
"private": true,
|
||||||
|
"main": "./src/index.ts",
|
||||||
|
"devDependencies": {
|
||||||
|
"next": "^13.2.3",
|
||||||
|
"zod": "^3.20.6"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@blocksuite/global": "0.4.1-20230220214107-0a354de"
|
||||||
|
}
|
||||||
|
}
|
||||||
146
packages/env/src/index.ts
vendored
Normal file
146
packages/env/src/index.ts
vendored
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
import { assertEquals } from '@blocksuite/global/utils';
|
||||||
|
import getConfig from 'next/config';
|
||||||
|
import { z } from 'zod';
|
||||||
|
|
||||||
|
import { getUaHelper } from './ua-helper';
|
||||||
|
|
||||||
|
type BrowserBase = {
|
||||||
|
isBrowser: true;
|
||||||
|
isServer: false;
|
||||||
|
isDebug: boolean;
|
||||||
|
|
||||||
|
// browser special properties
|
||||||
|
isLinux: boolean;
|
||||||
|
isMacOs: boolean;
|
||||||
|
isSafari: boolean;
|
||||||
|
isWindows: boolean;
|
||||||
|
isFireFox: boolean;
|
||||||
|
isMobile: boolean;
|
||||||
|
isChrome: boolean;
|
||||||
|
};
|
||||||
|
|
||||||
|
type NonChromeBrowser = BrowserBase & {
|
||||||
|
isChrome: false;
|
||||||
|
};
|
||||||
|
|
||||||
|
type ChromeBrowser = BrowserBase & {
|
||||||
|
isSafari: false;
|
||||||
|
isFireFox: false;
|
||||||
|
isChrome: true;
|
||||||
|
chromeVersion: number;
|
||||||
|
};
|
||||||
|
|
||||||
|
type Browser = NonChromeBrowser | ChromeBrowser;
|
||||||
|
|
||||||
|
type Server = {
|
||||||
|
isBrowser: false;
|
||||||
|
isServer: true;
|
||||||
|
isDebug: boolean;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type Environment = Browser | Server;
|
||||||
|
|
||||||
|
let environment: Environment | null = null;
|
||||||
|
|
||||||
|
export function getEnvironment() {
|
||||||
|
if (environment) {
|
||||||
|
return environment;
|
||||||
|
}
|
||||||
|
const isDebug = process.env.NODE_ENV === 'development';
|
||||||
|
if (typeof window === 'undefined') {
|
||||||
|
environment = {
|
||||||
|
isBrowser: false,
|
||||||
|
isServer: true,
|
||||||
|
isDebug,
|
||||||
|
} satisfies Server;
|
||||||
|
} else {
|
||||||
|
const uaHelper = getUaHelper();
|
||||||
|
environment = {
|
||||||
|
isBrowser: true,
|
||||||
|
isServer: false,
|
||||||
|
isDebug,
|
||||||
|
isLinux: uaHelper.isLinux,
|
||||||
|
isMacOs: uaHelper.isMacOs,
|
||||||
|
isSafari: uaHelper.isSafari,
|
||||||
|
isWindows: uaHelper.isWindows,
|
||||||
|
isFireFox: uaHelper.isFireFox,
|
||||||
|
isMobile: uaHelper.isMobile,
|
||||||
|
isChrome: uaHelper.isChrome,
|
||||||
|
} as Browser;
|
||||||
|
if (environment.isChrome === true) {
|
||||||
|
assertEquals(environment.isSafari, false);
|
||||||
|
assertEquals(environment.isFireFox, false);
|
||||||
|
environment = {
|
||||||
|
...environment,
|
||||||
|
isSafari: false,
|
||||||
|
isFireFox: false,
|
||||||
|
isChrome: true,
|
||||||
|
chromeVersion: uaHelper.getChromeVersion(),
|
||||||
|
} satisfies ChromeBrowser;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
globalThis.environment = environment;
|
||||||
|
return environment;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const publicRuntimeConfigSchema = z.object({
|
||||||
|
PROJECT_NAME: z.string(),
|
||||||
|
BUILD_DATE: z.string(),
|
||||||
|
gitVersion: z.string(),
|
||||||
|
hash: z.string(),
|
||||||
|
serverAPI: z.string(),
|
||||||
|
editorVersion: z.string(),
|
||||||
|
enableIndexedDBProvider: z.boolean(),
|
||||||
|
enableBroadCastChannelProvider: z.boolean(),
|
||||||
|
prefetchWorkspace: z.boolean(),
|
||||||
|
// expose internal api to globalThis, **development only**
|
||||||
|
exposeInternal: z.boolean(),
|
||||||
|
});
|
||||||
|
|
||||||
|
export type PublicRuntimeConfig = z.infer<typeof publicRuntimeConfigSchema>;
|
||||||
|
|
||||||
|
const { publicRuntimeConfig: config } = getConfig() as {
|
||||||
|
publicRuntimeConfig: PublicRuntimeConfig;
|
||||||
|
};
|
||||||
|
|
||||||
|
publicRuntimeConfigSchema.parse(config);
|
||||||
|
|
||||||
|
function printBuildInfo() {
|
||||||
|
console.group('Build info');
|
||||||
|
console.log('Project:', config.PROJECT_NAME);
|
||||||
|
console.log(
|
||||||
|
'Build date:',
|
||||||
|
config.BUILD_DATE ? new Date(config.BUILD_DATE).toLocaleString() : 'Unknown'
|
||||||
|
);
|
||||||
|
console.log('Editor Version:', config.editorVersion);
|
||||||
|
|
||||||
|
console.log('Version:', config.gitVersion);
|
||||||
|
console.log(
|
||||||
|
'AFFiNE is an open source project, you can view its source code on GitHub!'
|
||||||
|
);
|
||||||
|
console.log(`https://github.com/toeverything/AFFiNE/tree/${config.hash}`);
|
||||||
|
console.groupEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
declare global {
|
||||||
|
// eslint-disable-next-line no-var
|
||||||
|
var environment: Environment;
|
||||||
|
// eslint-disable-next-line no-var
|
||||||
|
var $AFFINE_SETUP: boolean | undefined;
|
||||||
|
// eslint-disable-next-line no-var
|
||||||
|
var editorVersion: string | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function setupGlobal() {
|
||||||
|
if (globalThis.$AFFINE_SETUP) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
globalThis.environment = getEnvironment();
|
||||||
|
if (getEnvironment().isBrowser) {
|
||||||
|
printBuildInfo();
|
||||||
|
globalThis.editorVersion = config.editorVersion;
|
||||||
|
}
|
||||||
|
globalThis.$AFFINE_SETUP = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
export { config };
|
||||||
@@ -1,14 +1,12 @@
|
|||||||
|
import { assertExists } from '@blocksuite/global/utils';
|
||||||
|
|
||||||
export function getUaHelper() {
|
export function getUaHelper() {
|
||||||
let uaHelper = null;
|
let uaHelper = null;
|
||||||
(function (navigator) {
|
(function (navigator) {
|
||||||
const getUa = () => {
|
const getUa = () => {
|
||||||
const ua = navigator.userAgent;
|
const ua = navigator.userAgent;
|
||||||
const uas = ua.toLowerCase();
|
const uas = ua.toLowerCase();
|
||||||
const mobile =
|
const mobile = /iPhone|iPad|iPod|Android/i.test(ua);
|
||||||
/mobile|tablet|ip(ad|hone|od)|android/i.test(ua) ||
|
|
||||||
(uas.indexOf('safari') > -1 &&
|
|
||||||
/Mac OS/i.test(ua) &&
|
|
||||||
/Macintosh/i.test(ua));
|
|
||||||
const android =
|
const android =
|
||||||
(mobile &&
|
(mobile &&
|
||||||
(uas.indexOf('android') > -1 || uas.indexOf('linux') > -1)) ||
|
(uas.indexOf('android') > -1 || uas.indexOf('linux') > -1)) ||
|
||||||
@@ -55,6 +53,14 @@ export function getUaHelper() {
|
|||||||
public isSafari = false;
|
public isSafari = false;
|
||||||
public isWindows = false;
|
public isWindows = false;
|
||||||
public isFireFox = false;
|
public isFireFox = false;
|
||||||
|
public isMobile = false;
|
||||||
|
public isChrome = false;
|
||||||
|
|
||||||
|
getChromeVersion = (): number => {
|
||||||
|
const raw = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);
|
||||||
|
assertExists(raw);
|
||||||
|
return parseInt(raw[2], 10);
|
||||||
|
};
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
this.uaMap = getUa();
|
this.uaMap = getUa();
|
||||||
@@ -71,6 +77,8 @@ export function getUaHelper() {
|
|||||||
this.isSafari = this.checkUseragent('safari');
|
this.isSafari = this.checkUseragent('safari');
|
||||||
this.isWindows = this.checkUseragent('win');
|
this.isWindows = this.checkUseragent('win');
|
||||||
this.isFireFox = this.checkUseragent('firefox');
|
this.isFireFox = this.checkUseragent('firefox');
|
||||||
|
this.isMobile = this.checkUseragent('mobile');
|
||||||
|
this.isChrome = this.checkUseragent('chrome');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
uaHelper = new UaHelper();
|
uaHelper = new UaHelper();
|
||||||
150
pnpm-lock.yaml
generated
150
pnpm-lock.yaml
generated
@@ -144,6 +144,7 @@ importers:
|
|||||||
specifiers:
|
specifiers:
|
||||||
'@affine/component': workspace:*
|
'@affine/component': workspace:*
|
||||||
'@affine/datacenter': workspace:*
|
'@affine/datacenter': workspace:*
|
||||||
|
'@affine/env': workspace:*
|
||||||
'@affine/i18n': workspace:*
|
'@affine/i18n': workspace:*
|
||||||
'@blocksuite/blocks': 0.4.1-20230220214107-0a354de
|
'@blocksuite/blocks': 0.4.1-20230220214107-0a354de
|
||||||
'@blocksuite/editor': 0.4.1-20230220214107-0a354de
|
'@blocksuite/editor': 0.4.1-20230220214107-0a354de
|
||||||
@@ -185,6 +186,7 @@ importers:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@affine/component': link:../../packages/component
|
'@affine/component': link:../../packages/component
|
||||||
'@affine/datacenter': link:../../packages/data-center
|
'@affine/datacenter': link:../../packages/data-center
|
||||||
|
'@affine/env': link:../../packages/env
|
||||||
'@affine/i18n': link:../../packages/i18n
|
'@affine/i18n': link:../../packages/i18n
|
||||||
'@blocksuite/blocks': 0.4.1-20230220214107-0a354de_txcevohh7lsyxi5mbohonudlma
|
'@blocksuite/blocks': 0.4.1-20230220214107-0a354de_txcevohh7lsyxi5mbohonudlma
|
||||||
'@blocksuite/editor': 0.4.1-20230220214107-0a354de_bsvfvsbxn3zjndsi6ntxj3sapa
|
'@blocksuite/editor': 0.4.1-20230220214107-0a354de_bsvfvsbxn3zjndsi6ntxj3sapa
|
||||||
@@ -341,6 +343,17 @@ importers:
|
|||||||
'@types/debug': 4.1.7
|
'@types/debug': 4.1.7
|
||||||
debug: 4.3.4
|
debug: 4.3.4
|
||||||
|
|
||||||
|
packages/env:
|
||||||
|
specifiers:
|
||||||
|
'@blocksuite/global': 0.4.1-20230220214107-0a354de
|
||||||
|
next: ^13.2.3
|
||||||
|
zod: ^3.20.6
|
||||||
|
dependencies:
|
||||||
|
'@blocksuite/global': 0.4.1-20230220214107-0a354de
|
||||||
|
devDependencies:
|
||||||
|
next: 13.2.3
|
||||||
|
zod: 3.20.6
|
||||||
|
|
||||||
packages/i18n:
|
packages/i18n:
|
||||||
specifiers:
|
specifiers:
|
||||||
'@affine/debug': workspace:*
|
'@affine/debug': workspace:*
|
||||||
@@ -1719,6 +1732,18 @@ packages:
|
|||||||
turndown: 7.1.1
|
turndown: 7.1.1
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/@blocksuite/global/0.4.1-20230220214107-0a354de:
|
||||||
|
resolution: {integrity: sha512-wC+TXvoqj5Ypx6uDj2gE+o8fclvs+K0jVtG7FnlOVJ6AZnYup5kBGGWBx1SwfhbwoXmF/ZcHOcAVZmdNsupfVA==}
|
||||||
|
peerDependencies:
|
||||||
|
lit: ^2.6
|
||||||
|
peerDependenciesMeta:
|
||||||
|
lit:
|
||||||
|
optional: true
|
||||||
|
dependencies:
|
||||||
|
ansi-colors: 4.1.3
|
||||||
|
zod: 3.20.6
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@blocksuite/global/0.4.1-20230220214107-0a354de_lit@2.6.1:
|
/@blocksuite/global/0.4.1-20230220214107-0a354de_lit@2.6.1:
|
||||||
resolution: {integrity: sha512-wC+TXvoqj5Ypx6uDj2gE+o8fclvs+K0jVtG7FnlOVJ6AZnYup5kBGGWBx1SwfhbwoXmF/ZcHOcAVZmdNsupfVA==}
|
resolution: {integrity: sha512-wC+TXvoqj5Ypx6uDj2gE+o8fclvs+K0jVtG7FnlOVJ6AZnYup5kBGGWBx1SwfhbwoXmF/ZcHOcAVZmdNsupfVA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -1771,7 +1796,7 @@ packages:
|
|||||||
'@blocksuite/store': 0.4.1-20230220214107-0a354de_lit@2.6.1+yjs@13.5.47
|
'@blocksuite/store': 0.4.1-20230220214107-0a354de_lit@2.6.1+yjs@13.5.47
|
||||||
react: 18.2.0
|
react: 18.2.0
|
||||||
react-dom: 18.2.0_react@18.2.0
|
react-dom: 18.2.0_react@18.2.0
|
||||||
zustand: 4.3.3_react@18.2.0
|
zustand: 4.3.5_react@18.2.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- immer
|
- immer
|
||||||
- lit
|
- lit
|
||||||
@@ -1789,7 +1814,7 @@ packages:
|
|||||||
flexsearch: 0.7.21
|
flexsearch: 0.7.21
|
||||||
idb-keyval: 6.2.0
|
idb-keyval: 6.2.0
|
||||||
ky: 0.33.2
|
ky: 0.33.2
|
||||||
lib0: 0.2.62
|
lib0: 0.2.63
|
||||||
merge: 2.1.1
|
merge: 2.1.1
|
||||||
nanoid: 4.0.1
|
nanoid: 4.0.1
|
||||||
y-protocols: 1.0.5
|
y-protocols: 1.0.5
|
||||||
@@ -6359,7 +6384,7 @@ packages:
|
|||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
dependencies:
|
dependencies:
|
||||||
delegates: 1.0.0
|
delegates: 1.0.0
|
||||||
readable-stream: 3.6.0
|
readable-stream: 3.6.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/arg/4.1.3:
|
/arg/4.1.3:
|
||||||
@@ -6679,7 +6704,7 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
buffer: 5.7.1
|
buffer: 5.7.1
|
||||||
inherits: 2.0.4
|
inherits: 2.0.4
|
||||||
readable-stream: 3.6.0
|
readable-stream: 3.6.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/body-parser/1.20.1:
|
/body-parser/1.20.1:
|
||||||
@@ -6875,7 +6900,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
|
resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
function-bind: 1.1.1
|
function-bind: 1.1.1
|
||||||
get-intrinsic: 1.1.3
|
get-intrinsic: 1.2.0
|
||||||
|
|
||||||
/call-me-maybe/1.0.2:
|
/call-me-maybe/1.0.2:
|
||||||
resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==}
|
resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==}
|
||||||
@@ -7206,7 +7231,7 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
buffer-from: 1.1.2
|
buffer-from: 1.1.2
|
||||||
inherits: 2.0.4
|
inherits: 2.0.4
|
||||||
readable-stream: 2.3.7
|
readable-stream: 2.3.8
|
||||||
typedarray: 0.0.6
|
typedarray: 0.0.6
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
@@ -7524,6 +7549,14 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
has-property-descriptors: 1.0.0
|
has-property-descriptors: 1.0.0
|
||||||
object-keys: 1.1.1
|
object-keys: 1.1.1
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/define-properties/1.2.0:
|
||||||
|
resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
dependencies:
|
||||||
|
has-property-descriptors: 1.0.0
|
||||||
|
object-keys: 1.1.1
|
||||||
|
|
||||||
/defu/6.1.2:
|
/defu/6.1.2:
|
||||||
resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==}
|
resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==}
|
||||||
@@ -9032,6 +9065,14 @@ packages:
|
|||||||
function-bind: 1.1.1
|
function-bind: 1.1.1
|
||||||
has: 1.0.3
|
has: 1.0.3
|
||||||
has-symbols: 1.0.3
|
has-symbols: 1.0.3
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/get-intrinsic/1.2.0:
|
||||||
|
resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==}
|
||||||
|
dependencies:
|
||||||
|
function-bind: 1.1.1
|
||||||
|
has: 1.0.3
|
||||||
|
has-symbols: 1.0.3
|
||||||
|
|
||||||
/get-nonce/1.0.1:
|
/get-nonce/1.0.1:
|
||||||
resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
|
resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
|
||||||
@@ -9315,7 +9356,7 @@ packages:
|
|||||||
/has-property-descriptors/1.0.0:
|
/has-property-descriptors/1.0.0:
|
||||||
resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
|
resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
get-intrinsic: 1.1.3
|
get-intrinsic: 1.2.0
|
||||||
|
|
||||||
/has-proto/1.0.1:
|
/has-proto/1.0.1:
|
||||||
resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
|
resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
|
||||||
@@ -9672,7 +9713,7 @@ packages:
|
|||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bind: 1.0.2
|
call-bind: 1.0.2
|
||||||
define-properties: 1.1.4
|
define-properties: 1.2.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/is-negative-zero/2.0.2:
|
/is-negative-zero/2.0.2:
|
||||||
@@ -10251,6 +10292,13 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
isomorphic.js: 0.2.5
|
isomorphic.js: 0.2.5
|
||||||
|
|
||||||
|
/lib0/0.2.63:
|
||||||
|
resolution: {integrity: sha512-JhUd/JXR4rnWsSP1zup904ACbVFcdRieWoIGwGAtHww4zms0gNyi8EM30Rfftnk+6A10qQMSufjLM0/ncq06xw==}
|
||||||
|
engines: {node: '>=14'}
|
||||||
|
dependencies:
|
||||||
|
isomorphic.js: 0.2.5
|
||||||
|
dev: false
|
||||||
|
|
||||||
/lilconfig/2.0.6:
|
/lilconfig/2.0.6:
|
||||||
resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==}
|
resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
@@ -10957,6 +11005,51 @@ packages:
|
|||||||
- babel-plugin-macros
|
- babel-plugin-macros
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/next/13.2.3:
|
||||||
|
resolution: {integrity: sha512-nKFJC6upCPN7DWRx4+0S/1PIOT7vNlCT157w9AzbXEgKy6zkiPKEt5YyRUsRZkmpEqBVrGgOqNfwecTociyg+w==}
|
||||||
|
engines: {node: '>=14.6.0'}
|
||||||
|
hasBin: true
|
||||||
|
peerDependencies:
|
||||||
|
'@opentelemetry/api': ^1.4.0
|
||||||
|
fibers: '>= 3.1.0'
|
||||||
|
node-sass: ^6.0.0 || ^7.0.0
|
||||||
|
react: ^18.2.0
|
||||||
|
react-dom: ^18.2.0
|
||||||
|
sass: ^1.3.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
'@opentelemetry/api':
|
||||||
|
optional: true
|
||||||
|
fibers:
|
||||||
|
optional: true
|
||||||
|
node-sass:
|
||||||
|
optional: true
|
||||||
|
sass:
|
||||||
|
optional: true
|
||||||
|
dependencies:
|
||||||
|
'@next/env': 13.2.3
|
||||||
|
'@swc/helpers': 0.4.14
|
||||||
|
caniuse-lite: 1.0.30001419
|
||||||
|
postcss: 8.4.14
|
||||||
|
styled-jsx: 5.1.1
|
||||||
|
optionalDependencies:
|
||||||
|
'@next/swc-android-arm-eabi': 13.2.3
|
||||||
|
'@next/swc-android-arm64': 13.2.3
|
||||||
|
'@next/swc-darwin-arm64': 13.2.3
|
||||||
|
'@next/swc-darwin-x64': 13.2.3
|
||||||
|
'@next/swc-freebsd-x64': 13.2.3
|
||||||
|
'@next/swc-linux-arm-gnueabihf': 13.2.3
|
||||||
|
'@next/swc-linux-arm64-gnu': 13.2.3
|
||||||
|
'@next/swc-linux-arm64-musl': 13.2.3
|
||||||
|
'@next/swc-linux-x64-gnu': 13.2.3
|
||||||
|
'@next/swc-linux-x64-musl': 13.2.3
|
||||||
|
'@next/swc-win32-arm64-msvc': 13.2.3
|
||||||
|
'@next/swc-win32-ia32-msvc': 13.2.3
|
||||||
|
'@next/swc-win32-x64-msvc': 13.2.3
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@babel/core'
|
||||||
|
- babel-plugin-macros
|
||||||
|
dev: true
|
||||||
|
|
||||||
/next/13.2.3_react@18.2.0:
|
/next/13.2.3_react@18.2.0:
|
||||||
resolution: {integrity: sha512-nKFJC6upCPN7DWRx4+0S/1PIOT7vNlCT157w9AzbXEgKy6zkiPKEt5YyRUsRZkmpEqBVrGgOqNfwecTociyg+w==}
|
resolution: {integrity: sha512-nKFJC6upCPN7DWRx4+0S/1PIOT7vNlCT157w9AzbXEgKy6zkiPKEt5YyRUsRZkmpEqBVrGgOqNfwecTociyg+w==}
|
||||||
engines: {node: '>=14.6.0'}
|
engines: {node: '>=14.6.0'}
|
||||||
@@ -11186,7 +11279,7 @@ packages:
|
|||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bind: 1.0.2
|
call-bind: 1.0.2
|
||||||
define-properties: 1.1.4
|
define-properties: 1.2.0
|
||||||
|
|
||||||
/object-keys/1.1.1:
|
/object-keys/1.1.1:
|
||||||
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
|
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
|
||||||
@@ -11197,7 +11290,7 @@ packages:
|
|||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bind: 1.0.2
|
call-bind: 1.0.2
|
||||||
define-properties: 1.1.4
|
define-properties: 1.2.0
|
||||||
has-symbols: 1.0.3
|
has-symbols: 1.0.3
|
||||||
object-keys: 1.1.1
|
object-keys: 1.1.1
|
||||||
dev: true
|
dev: true
|
||||||
@@ -12127,8 +12220,8 @@ packages:
|
|||||||
strip-bom: 3.0.0
|
strip-bom: 3.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/readable-stream/2.3.7:
|
/readable-stream/2.3.8:
|
||||||
resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==}
|
resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
core-util-is: 1.0.3
|
core-util-is: 1.0.3
|
||||||
inherits: 2.0.4
|
inherits: 2.0.4
|
||||||
@@ -12139,8 +12232,8 @@ packages:
|
|||||||
util-deprecate: 1.0.2
|
util-deprecate: 1.0.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/readable-stream/3.6.0:
|
/readable-stream/3.6.1:
|
||||||
resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==}
|
resolution: {integrity: sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==}
|
||||||
engines: {node: '>= 6'}
|
engines: {node: '>= 6'}
|
||||||
dependencies:
|
dependencies:
|
||||||
inherits: 2.0.4
|
inherits: 2.0.4
|
||||||
@@ -12151,7 +12244,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==}
|
resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dependencies:
|
dependencies:
|
||||||
readable-stream: 3.6.0
|
readable-stream: 3.6.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/readdirp/3.6.0:
|
/readdirp/3.6.0:
|
||||||
@@ -12235,7 +12328,7 @@ packages:
|
|||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bind: 1.0.2
|
call-bind: 1.0.2
|
||||||
define-properties: 1.1.4
|
define-properties: 1.2.0
|
||||||
functions-have-names: 1.2.3
|
functions-have-names: 1.2.3
|
||||||
|
|
||||||
/regexpp/3.2.0:
|
/regexpp/3.2.0:
|
||||||
@@ -12613,7 +12706,7 @@ packages:
|
|||||||
get-browser-rtc: 1.1.0
|
get-browser-rtc: 1.1.0
|
||||||
queue-microtask: 1.2.3
|
queue-microtask: 1.2.3
|
||||||
randombytes: 2.1.0
|
randombytes: 2.1.0
|
||||||
readable-stream: 3.6.0
|
readable-stream: 3.6.1
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: false
|
dev: false
|
||||||
@@ -12956,6 +13049,22 @@ packages:
|
|||||||
peek-readable: 5.0.0
|
peek-readable: 5.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/styled-jsx/5.1.1:
|
||||||
|
resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
|
||||||
|
engines: {node: '>= 12.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
'@babel/core': '*'
|
||||||
|
babel-plugin-macros: '*'
|
||||||
|
react: '>= 16.8.0 || 17.x.x || ^18.0.0-0'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
'@babel/core':
|
||||||
|
optional: true
|
||||||
|
babel-plugin-macros:
|
||||||
|
optional: true
|
||||||
|
dependencies:
|
||||||
|
client-only: 0.0.1
|
||||||
|
dev: true
|
||||||
|
|
||||||
/styled-jsx/5.1.1_react@18.2.0:
|
/styled-jsx/5.1.1_react@18.2.0:
|
||||||
resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
|
resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
@@ -14167,7 +14276,7 @@ packages:
|
|||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
lib0: 0.2.62
|
lib0: 0.2.63
|
||||||
simple-peer: 9.11.1
|
simple-peer: 9.11.1
|
||||||
y-protocols: 1.0.5
|
y-protocols: 1.0.5
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
@@ -14296,10 +14405,9 @@ packages:
|
|||||||
|
|
||||||
/zod/3.20.6:
|
/zod/3.20.6:
|
||||||
resolution: {integrity: sha512-oyu0m54SGCtzh6EClBVqDDlAYRz4jrVtKwQ7ZnsEmMI9HnzuZFj8QFwAY1M5uniIYACdGvv0PBWPF2kO0aNofA==}
|
resolution: {integrity: sha512-oyu0m54SGCtzh6EClBVqDDlAYRz4jrVtKwQ7ZnsEmMI9HnzuZFj8QFwAY1M5uniIYACdGvv0PBWPF2kO0aNofA==}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/zustand/4.3.3_react@18.2.0:
|
/zustand/4.3.5_react@18.2.0:
|
||||||
resolution: {integrity: sha512-x2jXq8S0kfLGNwGh87nhRfEc2eZy37tSatpSoSIN+O6HIaBhgQHSONV/F9VNrNcBcKQu/E80K1DeHDYQC/zCrQ==}
|
resolution: {integrity: sha512-2iPUzfwx+g3f0PagOMz2vDO9mZzEp2puFpNe7vrAymVPOEIEUjCPkC4/zy84eAscxIWmTU4j9g6upXYkJdzEFQ==}
|
||||||
engines: {node: '>=12.7.0'}
|
engines: {node: '>=12.7.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
immer: '>=9.0'
|
immer: '>=9.0'
|
||||||
|
|||||||
@@ -21,7 +21,8 @@
|
|||||||
"@affine/datacenter": ["./packages/datacenter/src"],
|
"@affine/datacenter": ["./packages/datacenter/src"],
|
||||||
"@affine/i18n": ["./packages/i18n/src"],
|
"@affine/i18n": ["./packages/i18n/src"],
|
||||||
"@affine/logger": ["./packages/logger/src"],
|
"@affine/logger": ["./packages/logger/src"],
|
||||||
"@affine/debug": ["./packages/store/debug"],
|
"@affine/debug": ["./packages/debug"],
|
||||||
|
"@affine/env": ["./packages/env"],
|
||||||
"@toeverything/pathfinder-logger": ["./packages/logger"]
|
"@toeverything/pathfinder-logger": ["./packages/logger"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -46,6 +47,9 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "./packages/logger"
|
"path": "./packages/logger"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "./packages/env"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"files": [],
|
"files": [],
|
||||||
|
|||||||
Reference in New Issue
Block a user