Skip to content

Commit 00d23f6

Browse files
committed
chore: using monaco-editor from node_modules
and removing script tags for monaco-editor
1 parent 77a0696 commit 00d23f6

File tree

9 files changed

+1034
-228
lines changed

9 files changed

+1034
-228
lines changed

app.html

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,6 @@
99
gtag('js', new Date())
1010
gtag('config', 'G-HBV7K2PRX6')
1111
</script>
12-
<link
13-
rel="stylesheet"
14-
data-name="vs/editor/editor.main"
15-
href="https://unpkg.com/monaco-editor/min/vs/editor/editor.main.css"
16-
/>
17-
<script>
18-
var require = { paths: { vs: 'https://unpkg.com/monaco-editor/min/vs' } }
19-
</script>
2012
{{ HEAD }}
2113
</head>
2214

globals.d.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1 @@
11
declare module 'diff-match-patch'
2-
3-
declare namespace monaco {
4-
let editor: any;
5-
}

helpers/types.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,12 @@ export interface DiffData {
3737
monacoDiffEditor: any
3838
diffNavigator: any
3939
}
40+
41+
export interface v2DiffData {
42+
lhs: string
43+
rhs: string
44+
rhsLabel: string
45+
lhsLabel: string
46+
monacoDiffEditor: any
47+
diffNavigator: any
48+
}

helpers/utils.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,10 @@ export function getMonacoEditorDefaultOptions(theme: string) {
6565
theme,
6666
fontSize: parseFloat(getComputedStyle(document.documentElement).fontSize),
6767
scrollBeyondLastLine: false,
68-
scrollBeyondLastColumn: false,
68+
scrollBeyondLastColumn: 0,
6969
minimap: {
7070
enabled: false,
7171
},
72-
wordWrap: 'on',
7372
contextmenu: false,
7473
}
7574
}

nuxt.config.js

Lines changed: 234 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
1-
const BASE_URL = "https://diffviewer.vercel.app";
1+
import path from 'path'
2+
import MonacoWebpackPlugin from 'monaco-editor-webpack-plugin'
3+
4+
const BASE_URL = 'https://diffviewer.vercel.app'
25
const domainAliases = [
3-
"https://diffchecker.vercel.app/",
4-
"https://textdiff.vercel.app/",
5-
"https://differencer.vercel.app/",
6-
"https://diffie.vercel.app/",
7-
"https://differencefinder.vercel.app/"
6+
'https://diffchecker.vercel.app/',
7+
'https://textdiff.vercel.app/',
8+
'https://differencer.vercel.app/',
9+
'https://diffie.vercel.app/',
10+
'https://differencefinder.vercel.app/',
811
]
9-
const canonicalLinks = domainAliases.map(x => ({ rel: "canonical", href: x }))
10-
const DESCRIPTION = "A privacy first diff viewer that is secure, easy, simple and for any text type";
12+
const canonicalLinks = domainAliases.map((x) => ({ rel: 'canonical', href: x }))
13+
const DESCRIPTION =
14+
'A privacy first diff viewer that is secure, easy, simple and for any text type'
1115
export default {
1216
ssr: true,
1317
head: {
@@ -17,67 +21,219 @@ export default {
1721
{ name: 'color-scheme', content: 'dark light' },
1822
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
1923
{ name: 'format-detection', content: 'telephone=no' },
20-
{ name: "theme-color", content: "#2563EB" },
21-
{ name: "og:url", property: "og:url", content: `${BASE_URL}` },
22-
{ name: "og:image", property: "og:url", content: `${BASE_URL}/brand-430x495.png` },
23-
{ name: "twitter:title", property: "og:url", content: DESCRIPTION },
24-
{ name: "og:title", property: "og:url", content: DESCRIPTION },
25-
{ name: "og:type", property: "og:url", content: "website" },
26-
{ name: "description", property: "og:url", content: DESCRIPTION },
27-
{ name: "og:description", property: "og:url", content: DESCRIPTION },
28-
{ name: "twitter:description", property: "og:url", content: DESCRIPTION },
29-
{ name: "twitter:card", property: "og:url", content: "summary" },
30-
{ name: "twitter:creator", property: "og:url", content: "@technikhil314" },
31-
{ name: "og:image", property: "og:url", content: `${BASE_URL}/128x128.png` },
32-
{ name: "og:image", property: "og:url", content: `${BASE_URL}/brand-192x192.png` },
33-
{ name: "og:image", property: "og:url", content: `${BASE_URL}/brand-200x200.png` },
34-
{ name: "og:image", property: "og:url", content: `${BASE_URL}/brand-512x512.png` },
35-
{ name: "og:image", property: "og:url", content: `${BASE_URL}/brand-800x800.png` },
36-
{ name: "image", property: "og:url", content: `${BASE_URL}/brand-1200x600.png` },
37-
{ name: "og:image:alt", property: "og:url", content: DESCRIPTION },
38-
{ name: "twitter:image", property: "og:url", content: `${BASE_URL}/128x128.png` },
24+
{ name: 'theme-color', content: '#2563EB' },
25+
{ name: 'og:url', property: 'og:url', content: `${BASE_URL}` },
26+
{
27+
name: 'og:image',
28+
property: 'og:url',
29+
content: `${BASE_URL}/brand-430x495.png`,
30+
},
31+
{ name: 'twitter:title', property: 'og:url', content: DESCRIPTION },
32+
{ name: 'og:title', property: 'og:url', content: DESCRIPTION },
33+
{ name: 'og:type', property: 'og:url', content: 'website' },
34+
{ name: 'description', property: 'og:url', content: DESCRIPTION },
35+
{ name: 'og:description', property: 'og:url', content: DESCRIPTION },
36+
{ name: 'twitter:description', property: 'og:url', content: DESCRIPTION },
37+
{ name: 'twitter:card', property: 'og:url', content: 'summary' },
38+
{
39+
name: 'twitter:creator',
40+
property: 'og:url',
41+
content: '@technikhil314',
42+
},
43+
{
44+
name: 'og:image',
45+
property: 'og:url',
46+
content: `${BASE_URL}/128x128.png`,
47+
},
48+
{
49+
name: 'og:image',
50+
property: 'og:url',
51+
content: `${BASE_URL}/brand-192x192.png`,
52+
},
53+
{
54+
name: 'og:image',
55+
property: 'og:url',
56+
content: `${BASE_URL}/brand-200x200.png`,
57+
},
58+
{
59+
name: 'og:image',
60+
property: 'og:url',
61+
content: `${BASE_URL}/brand-512x512.png`,
62+
},
63+
{
64+
name: 'og:image',
65+
property: 'og:url',
66+
content: `${BASE_URL}/brand-800x800.png`,
67+
},
68+
{
69+
name: 'image',
70+
property: 'og:url',
71+
content: `${BASE_URL}/brand-1200x600.png`,
72+
},
73+
{ name: 'og:image:alt', property: 'og:url', content: DESCRIPTION },
74+
{
75+
name: 'twitter:image',
76+
property: 'og:url',
77+
content: `${BASE_URL}/128x128.png`,
78+
},
3979
],
4080
link: [
41-
{ rel: "manifest", href: "/manifest.json" },
42-
{ rel: "sitemap", type: "application/xml", title: "Sitemap", href: "/sitemap.xml" },
43-
{ rel: "preconnect", href: "https://fonts.googleapis.com" },
44-
{ rel: "preconnect", href: "https://fonts.gstatic.com", crossorigin: true },
45-
{ href: "https://fonts.googleapis.com/css2?family=Open+Sans&display=swap", rel: "stylesheet" },
46-
{ rel: "icon", media: "(prefers-color-scheme: light)", type: "image/x-icon", href: "/dark-favicon.ico" },
47-
{ rel: "shortcut icon", media: "(prefers-color-scheme: light)", href: "/dark-favicon.ico", type: "image/x-icon" },
48-
{ rel: "apple-touch-icon", media: "(prefers-color-scheme: light)", href: "/dark-apple-touch-icon.png" },
49-
{ rel: "apple-touch-icon", media: "(prefers-color-scheme: light)", sizes: "57x57", href: "/dark-apple-touch-icon-57x57.png" },
50-
{ rel: "apple-touch-icon", media: "(prefers-color-scheme: light)", sizes: "72x72", href: "/dark-apple-touch-icon-72x72.png" },
51-
{ rel: "apple-touch-icon", media: "(prefers-color-scheme: light)", sizes: "76x76", href: "/dark-apple-touch-icon-76x76.png" },
52-
{ rel: "apple-touch-icon", media: "(prefers-color-scheme: light)", sizes: "114x114", href: "/dark-apple-touch-icon-114x114.png" },
53-
{ rel: "apple-touch-icon", media: "(prefers-color-scheme: light)", sizes: "120x120", href: "/dark-apple-touch-icon-120x120.png" },
54-
{ rel: "apple-touch-icon", media: "(prefers-color-scheme: light)", sizes: "144x144", href: "/dark-apple-touch-icon-144x144.png" },
55-
{ rel: "apple-touch-icon", media: "(prefers-color-scheme: light)", sizes: "152x152", href: "/dark-apple-touch-icon-152x152.png" },
56-
{ rel: "apple-touch-icon", media: "(prefers-color-scheme: light)", sizes: "180x180", href: "/dark-apple-touch-icon-180x180.png" },
57-
{ rel: "icon", media: "(prefers-color-scheme: dark)", type: "image/x-icon", href: "/light-favicon.ico" },
58-
{ rel: "shortcut icon", media: "(prefers-color-scheme: dark)", href: "/light-favicon.ico", type: "image/x-icon" },
59-
{ rel: "apple-touch-icon", media: "(prefers-color-scheme: dark)", href: "/light-apple-touch-icon.png" },
60-
{ rel: "apple-touch-icon", media: "(prefers-color-scheme: dark)", sizes: "57x57", href: "/light-apple-touch-icon-57x57.png" },
61-
{ rel: "apple-touch-icon", media: "(prefers-color-scheme: dark)", sizes: "72x72", href: "/light-apple-touch-icon-72x72.png" },
62-
{ rel: "apple-touch-icon", media: "(prefers-color-scheme: dark)", sizes: "76x76", href: "/light-apple-touch-icon-76x76.png" },
63-
{ rel: "apple-touch-icon", media: "(prefers-color-scheme: dark)", sizes: "114x114", href: "/light-apple-touch-icon-114x114.png" },
64-
{ rel: "apple-touch-icon", media: "(prefers-color-scheme: dark)", sizes: "120x120", href: "/light-apple-touch-icon-120x120.png" },
65-
{ rel: "apple-touch-icon", media: "(prefers-color-scheme: dark)", sizes: "144x144", href: "/light-apple-touch-icon-144x144.png" },
66-
{ rel: "apple-touch-icon", media: "(prefers-color-scheme: dark)", sizes: "152x152", href: "/light-apple-touch-icon-152x152.png" },
67-
{ rel: "apple-touch-icon", media: "(prefers-color-scheme: dark)", sizes: "180x180", href: "/light-apple-touch-icon-180x180.png" },
68-
...canonicalLinks
69-
]
81+
{ rel: 'manifest', href: '/manifest.json' },
82+
{
83+
rel: 'sitemap',
84+
type: 'application/xml',
85+
title: 'Sitemap',
86+
href: '/sitemap.xml',
87+
},
88+
{ rel: 'preconnect', href: 'https://fonts.googleapis.com' },
89+
{
90+
rel: 'preconnect',
91+
href: 'https://fonts.gstatic.com',
92+
crossorigin: true,
93+
},
94+
{
95+
href: 'https://fonts.googleapis.com/css2?family=Open+Sans&display=swap',
96+
rel: 'stylesheet',
97+
},
98+
{
99+
rel: 'icon',
100+
media: '(prefers-color-scheme: light)',
101+
type: 'image/x-icon',
102+
href: '/dark-favicon.ico',
103+
},
104+
{
105+
rel: 'shortcut icon',
106+
media: '(prefers-color-scheme: light)',
107+
href: '/dark-favicon.ico',
108+
type: 'image/x-icon',
109+
},
110+
{
111+
rel: 'apple-touch-icon',
112+
media: '(prefers-color-scheme: light)',
113+
href: '/dark-apple-touch-icon.png',
114+
},
115+
{
116+
rel: 'apple-touch-icon',
117+
media: '(prefers-color-scheme: light)',
118+
sizes: '57x57',
119+
href: '/dark-apple-touch-icon-57x57.png',
120+
},
121+
{
122+
rel: 'apple-touch-icon',
123+
media: '(prefers-color-scheme: light)',
124+
sizes: '72x72',
125+
href: '/dark-apple-touch-icon-72x72.png',
126+
},
127+
{
128+
rel: 'apple-touch-icon',
129+
media: '(prefers-color-scheme: light)',
130+
sizes: '76x76',
131+
href: '/dark-apple-touch-icon-76x76.png',
132+
},
133+
{
134+
rel: 'apple-touch-icon',
135+
media: '(prefers-color-scheme: light)',
136+
sizes: '114x114',
137+
href: '/dark-apple-touch-icon-114x114.png',
138+
},
139+
{
140+
rel: 'apple-touch-icon',
141+
media: '(prefers-color-scheme: light)',
142+
sizes: '120x120',
143+
href: '/dark-apple-touch-icon-120x120.png',
144+
},
145+
{
146+
rel: 'apple-touch-icon',
147+
media: '(prefers-color-scheme: light)',
148+
sizes: '144x144',
149+
href: '/dark-apple-touch-icon-144x144.png',
150+
},
151+
{
152+
rel: 'apple-touch-icon',
153+
media: '(prefers-color-scheme: light)',
154+
sizes: '152x152',
155+
href: '/dark-apple-touch-icon-152x152.png',
156+
},
157+
{
158+
rel: 'apple-touch-icon',
159+
media: '(prefers-color-scheme: light)',
160+
sizes: '180x180',
161+
href: '/dark-apple-touch-icon-180x180.png',
162+
},
163+
{
164+
rel: 'icon',
165+
media: '(prefers-color-scheme: dark)',
166+
type: 'image/x-icon',
167+
href: '/light-favicon.ico',
168+
},
169+
{
170+
rel: 'shortcut icon',
171+
media: '(prefers-color-scheme: dark)',
172+
href: '/light-favicon.ico',
173+
type: 'image/x-icon',
174+
},
175+
{
176+
rel: 'apple-touch-icon',
177+
media: '(prefers-color-scheme: dark)',
178+
href: '/light-apple-touch-icon.png',
179+
},
180+
{
181+
rel: 'apple-touch-icon',
182+
media: '(prefers-color-scheme: dark)',
183+
sizes: '57x57',
184+
href: '/light-apple-touch-icon-57x57.png',
185+
},
186+
{
187+
rel: 'apple-touch-icon',
188+
media: '(prefers-color-scheme: dark)',
189+
sizes: '72x72',
190+
href: '/light-apple-touch-icon-72x72.png',
191+
},
192+
{
193+
rel: 'apple-touch-icon',
194+
media: '(prefers-color-scheme: dark)',
195+
sizes: '76x76',
196+
href: '/light-apple-touch-icon-76x76.png',
197+
},
198+
{
199+
rel: 'apple-touch-icon',
200+
media: '(prefers-color-scheme: dark)',
201+
sizes: '114x114',
202+
href: '/light-apple-touch-icon-114x114.png',
203+
},
204+
{
205+
rel: 'apple-touch-icon',
206+
media: '(prefers-color-scheme: dark)',
207+
sizes: '120x120',
208+
href: '/light-apple-touch-icon-120x120.png',
209+
},
210+
{
211+
rel: 'apple-touch-icon',
212+
media: '(prefers-color-scheme: dark)',
213+
sizes: '144x144',
214+
href: '/light-apple-touch-icon-144x144.png',
215+
},
216+
{
217+
rel: 'apple-touch-icon',
218+
media: '(prefers-color-scheme: dark)',
219+
sizes: '152x152',
220+
href: '/light-apple-touch-icon-152x152.png',
221+
},
222+
{
223+
rel: 'apple-touch-icon',
224+
media: '(prefers-color-scheme: dark)',
225+
sizes: '180x180',
226+
href: '/light-apple-touch-icon-180x180.png',
227+
},
228+
...canonicalLinks,
229+
],
70230
},
71231

72232
// Global CSS: https://go.nuxtjs.dev/config-css
73-
css: [
74-
"~/styles/global.scss"
75-
],
233+
css: ['~/styles/global.scss'],
76234

77235
// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
78-
plugins: [
79-
'~/plugins/cookie-injector.client.ts'
80-
],
236+
plugins: ['~/plugins/cookie-injector.client.ts'],
81237

82238
// Auto import components: https://go.nuxtjs.dev/config-components
83239
components: true,
@@ -96,32 +252,39 @@ export default {
96252
modules: [
97253
// https://go.nuxtjs.dev/pwa
98254
'@nuxtjs/pwa',
99-
'@nuxtjs/sitemap'
255+
'@nuxtjs/sitemap',
100256
],
101257

102258
// PWA module configuration: https://go.nuxtjs.dev/pwa
103259
pwa: {
104260
manifest: {
105-
lang: 'en'
106-
}
261+
lang: 'en',
262+
},
107263
},
108264

109265
// sitemap autogeneration https://github.com/nuxt-community/sitemap-module
110266
sitemap: {
111-
hostname: BASE_URL
267+
hostname: BASE_URL,
112268
},
113269

114270
// Build Configuration: https://go.nuxtjs.dev/config-build
115271
build: {
116272
extractCSS: true,
117273
extend(config, { isClient }) {
118-
if (isClient && process.env.NODE_ENV === "development") {
274+
if (isClient && process.env.NODE_ENV === 'development') {
275+
config.resolve.alias.vscode = path.resolve(
276+
'./node_modules/monaco-languageclient/lib/vscode-compatibility'
277+
)
278+
config.plugins.push(
279+
new MonacoWebpackPlugin({
280+
languages: ['javascript'],
281+
features: ['coreCommands', 'find'],
282+
})
283+
)
119284
config.devtool = 'source-map'
120285
}
121-
}
286+
},
122287
},
123288

124-
serverMiddleware: [
125-
{ path: '/test', handler: '~/serverMiddleware/ok.js' },
126-
]
289+
serverMiddleware: [{ path: '/test', handler: '~/serverMiddleware/ok.js' }],
127290
}

0 commit comments

Comments
 (0)