0acfd563fe
* Upgrade Liveblocks packages to 0.17 * Convert app to recommended Liveblocks 0.17 setup * Convert multiplayer example to recommended Liveblocks 0.17 setup * Convert multiplayer-with-images example to recommended Liveblocks 0.17 setup * Fix React rendering issue for multiplayer app This bug could manifest after _navigating_ internally to the Multiplayer example app. Liveblocks Storage would seem to remain empty, but Presence would still seem to work. In other words, you'd see cursors flying, but no document contents. This did not happen when doing a full page load. This bug only occurs in React strict mode. * update onPatch and onCommand * "Add event callbacks for `onSessionStart` and `onSessionEnd`" * Adds edit state * Pass callbacks to app * Remove console logs * interpolate cursor only when not in session * Update multiplayer icon * Fix a few things Co-authored-by: Steve Ruiz <steveruizok@gmail.com>
79 lines
1.9 KiB
JavaScript
79 lines
1.9 KiB
JavaScript
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
const withPWA = require('next-pwa')
|
|
const withTM = require('next-transpile-modules')
|
|
const SentryWebpackPlugin = require('@sentry/webpack-plugin')
|
|
|
|
const {
|
|
GITHUB_ID,
|
|
GITHUB_API_SECRET,
|
|
NEXT_PUBLIC_SENTRY_DSN: SENTRY_DSN,
|
|
SENTRY_ORG,
|
|
SENTRY_PROJECT,
|
|
SENTRY_AUTH_TOKEN,
|
|
NODE_ENV,
|
|
VERCEL_GIT_COMMIT_SHA,
|
|
GA_MEASUREMENT_ID,
|
|
} = process.env
|
|
|
|
process.env.SENTRY_DSN = SENTRY_DSN
|
|
|
|
const isProduction = NODE_ENV === 'production'
|
|
|
|
const basePath = ''
|
|
|
|
module.exports = withTM(['@tldraw/tldraw', '@tldraw/core'])(
|
|
withPWA({
|
|
reactStrictMode: true,
|
|
pwa: {
|
|
disable: !isProduction,
|
|
dest: 'public',
|
|
},
|
|
productionBrowserSourceMaps: true,
|
|
env: {
|
|
NEXT_PUBLIC_COMMIT_SHA: VERCEL_GIT_COMMIT_SHA,
|
|
GA_MEASUREMENT_ID,
|
|
GITHUB_ID,
|
|
GITHUB_API_SECRET,
|
|
},
|
|
webpack: (config, options) => {
|
|
if (!options.isServer) {
|
|
config.resolve.alias['@sentry/node'] = '@sentry/browser'
|
|
}
|
|
|
|
config.plugins.push(
|
|
new options.webpack.DefinePlugin({
|
|
'process.env.NEXT_IS_SERVER': JSON.stringify(options.isServer.toString()),
|
|
})
|
|
)
|
|
|
|
config.module.rules.push({
|
|
test: /.*packages.*\.js$/,
|
|
use: ['source-map-loader'],
|
|
enforce: 'pre',
|
|
})
|
|
|
|
if (
|
|
SENTRY_DSN &&
|
|
SENTRY_ORG &&
|
|
SENTRY_PROJECT &&
|
|
SENTRY_AUTH_TOKEN &&
|
|
VERCEL_GIT_COMMIT_SHA &&
|
|
isProduction
|
|
) {
|
|
config.plugins.push(
|
|
new SentryWebpackPlugin({
|
|
include: '.next',
|
|
ignore: ['node_modules'],
|
|
stripPrefix: ['webpack://_N_E/'],
|
|
urlPrefix: `~${basePath}/_next`,
|
|
release: VERCEL_GIT_COMMIT_SHA,
|
|
authToken: SENTRY_AUTH_TOKEN,
|
|
org: SENTRY_PROJECT,
|
|
project: SENTRY_ORG,
|
|
})
|
|
)
|
|
}
|
|
return config
|
|
},
|
|
})
|
|
)
|