From dfeb085db13e6f76c1f573691066e5532749ca31 Mon Sep 17 00:00:00 2001 From: Dominic Elm Date: Wed, 17 Jul 2024 17:36:03 +0200 Subject: [PATCH 1/5] chore(style): minor code style adjustments for improved consistency --- .../tutorialkit.dev/src/components/Layout/Head.astro | 2 ++ extensions/vscode/build.mjs | 12 +++++++----- extensions/vscode/src/commands/index.ts | 5 +---- .../vscode/src/commands/tutorialkit.initialize.ts | 3 ++- .../vscode/src/commands/tutorialkit.load-tutorial.ts | 2 +- .../src/commands/tutorialkit.select-tutorial.ts | 2 +- extensions/vscode/src/utils/isTutorialKit.ts | 9 +++++---- extensions/vscode/src/views/lessonsTree.ts | 9 ++++++--- 8 files changed, 25 insertions(+), 19 deletions(-) diff --git a/docs/tutorialkit.dev/src/components/Layout/Head.astro b/docs/tutorialkit.dev/src/components/Layout/Head.astro index c7e64b452..5f624360d 100644 --- a/docs/tutorialkit.dev/src/components/Layout/Head.astro +++ b/docs/tutorialkit.dev/src/components/Layout/Head.astro @@ -16,8 +16,10 @@ import Default from '@astrojs/starlight/components/Head.astro'; // @ts-ignore dataLayer.push(arguments); } + // @ts-ignore gtag('js', new Date()); + // @ts-ignore gtag('config', 'G-64MFE82HG5'); diff --git a/extensions/vscode/build.mjs b/extensions/vscode/build.mjs index c573a9a72..ca57d51e0 100644 --- a/extensions/vscode/build.mjs +++ b/extensions/vscode/build.mjs @@ -1,6 +1,6 @@ import * as esbuild from 'esbuild'; -import fs from 'node:fs'; import { execa } from 'execa'; +import fs from 'node:fs'; const production = process.argv.includes('--production'); const watch = process.argv.includes('--watch'); @@ -18,7 +18,7 @@ async function main() { external: ['vscode'], logLevel: 'silent', plugins: [ - /* add to the end of plugins array */ + // add to the end of plugins array esbuildProblemMatcherPlugin, ], }); @@ -33,7 +33,7 @@ async function main() { await ctx.dispose(); if (production) { - // rename name in package json to match extension name on store: + // rename name in package json to match extension name on store const pkgJSON = JSON.parse(fs.readFileSync('./package.json', { encoding: 'utf8' })); pkgJSON.name = 'tutorialkit'; @@ -50,14 +50,16 @@ const esbuildProblemMatcherPlugin = { name: 'esbuild-problem-matcher', setup(build) { build.onStart(() => { - console.log('[watch] build started'); + console.log('[watch] Build started'); }); + build.onEnd((result) => { result.errors.forEach(({ text, location }) => { console.error(`✘ [ERROR] ${text}`); console.error(` ${location.file}:${location.line}:${location.column}:`); }); - console.log('[watch] build finished'); + + console.log('[watch] Build finished'); }); }, }; diff --git a/extensions/vscode/src/commands/index.ts b/extensions/vscode/src/commands/index.ts index 88409a1dd..d7447dbfb 100644 --- a/extensions/vscode/src/commands/index.ts +++ b/extensions/vscode/src/commands/index.ts @@ -6,10 +6,7 @@ import { selectTutorial } from './tutorialkit.select-tutorial'; import { loadTutorial } from './tutorialkit.load-tutorial'; import { initialize } from './tutorialkit.initialize'; -/** - * No need to use these consts outside of this file: - * – Use `cmd[name].command` instead. - */ +// no need to use these consts outside of this file, use `cmd[name].command` instead const CMD = { INITIALIZE: 'tutorialkit.initialize', SELECT_TUTORIAL: 'tutorialkit.select-tutorial', diff --git a/extensions/vscode/src/commands/tutorialkit.initialize.ts b/extensions/vscode/src/commands/tutorialkit.initialize.ts index eb0cbe793..b14f16e31 100644 --- a/extensions/vscode/src/commands/tutorialkit.initialize.ts +++ b/extensions/vscode/src/commands/tutorialkit.initialize.ts @@ -1,6 +1,6 @@ import * as vscode from 'vscode'; -import isTutorialKitWorkspace from '../utils/isTutorialKit'; import { cmd } from '.'; +import isTutorialKitWorkspace from '../utils/isTutorialKit'; export async function initialize(toastIfEmpty = false) { const tutorialWorkpaces = (vscode.workspace.workspaceFolders || []).filter(isTutorialKitWorkspace); @@ -10,6 +10,7 @@ export async function initialize(toastIfEmpty = false) { vscode.window.showInformationMessage( 'No TutorialKit project found in the current workspace. Make sure there is a "@tutorialkit/astro" dependency or devDependency in your package.json file.', ); + vscode.commands.executeCommand('setContext', 'tutorialkit:tree', false); } } else if (tutorialWorkpaces.length === 1) { diff --git a/extensions/vscode/src/commands/tutorialkit.load-tutorial.ts b/extensions/vscode/src/commands/tutorialkit.load-tutorial.ts index 8e14218e5..3c7154df0 100644 --- a/extensions/vscode/src/commands/tutorialkit.load-tutorial.ts +++ b/extensions/vscode/src/commands/tutorialkit.load-tutorial.ts @@ -1,6 +1,6 @@ import * as vscode from 'vscode'; -import { LessonsTreeDataProvider, getLessonsTreeDataProvider, setLessonsTreeDataProvider } from '../views/lessonsTree'; import { extContext } from '../extension'; +import { LessonsTreeDataProvider, getLessonsTreeDataProvider, setLessonsTreeDataProvider } from '../views/lessonsTree'; export async function loadTutorial(uri: vscode.Uri) { setLessonsTreeDataProvider(new LessonsTreeDataProvider(uri, extContext)); diff --git a/extensions/vscode/src/commands/tutorialkit.select-tutorial.ts b/extensions/vscode/src/commands/tutorialkit.select-tutorial.ts index 860b9db46..1504e35d1 100644 --- a/extensions/vscode/src/commands/tutorialkit.select-tutorial.ts +++ b/extensions/vscode/src/commands/tutorialkit.select-tutorial.ts @@ -1,6 +1,6 @@ import * as vscode from 'vscode'; -import isTutorialKitWorkspace from '../utils/isTutorialKit'; import { cmd } from '.'; +import isTutorialKitWorkspace from '../utils/isTutorialKit'; export async function selectTutorial() { const tutorialWorkpaces = (vscode.workspace.workspaceFolders || []).filter(isTutorialKitWorkspace); diff --git a/extensions/vscode/src/utils/isTutorialKit.ts b/extensions/vscode/src/utils/isTutorialKit.ts index d8c0d2133..3218c97ea 100644 --- a/extensions/vscode/src/utils/isTutorialKit.ts +++ b/extensions/vscode/src/utils/isTutorialKit.ts @@ -1,10 +1,10 @@ -import * as vscode from 'vscode'; -import * as path from 'path'; import * as fs from 'fs'; +import * as path from 'path'; +import * as vscode from 'vscode'; /** - * Check if the workspace is a TutorialKit workspace - * by looking for a TutorialKit dependency in the package.json file. + * Check if the workspace is a TutorialKit workspace by looking for a + * TutorialKit dependency in the package.json file. * * @param folder The workspace folder to check. * @returns True if the workspace is a TutorialKit workspace, false otherwise. @@ -13,6 +13,7 @@ export default function isTutorialKitWorkspace(folder: vscode.WorkspaceFolder): const packageJsonPath = path.join(folder.uri.fsPath, 'package.json'); const packageJsonContent = fs.readFileSync(packageJsonPath, 'utf8'); const packageJson = JSON.parse(packageJsonContent); + const tutorialkitDependency = packageJson.dependencies?.['@tutorialkit/astro'] || packageJson.devDependencies?.['@tutorialkit/astro']; diff --git a/extensions/vscode/src/views/lessonsTree.ts b/extensions/vscode/src/views/lessonsTree.ts index f5b342e5d..43bae2268 100644 --- a/extensions/vscode/src/views/lessonsTree.ts +++ b/extensions/vscode/src/views/lessonsTree.ts @@ -15,12 +15,15 @@ let lessonsTreeDataProvider: LessonsTreeDataProvider; export function getLessonsTreeDataProvider() { return lessonsTreeDataProvider; } + export function setLessonsTreeDataProvider(provider: LessonsTreeDataProvider) { lessonsTreeDataProvider = provider; } export class LessonsTreeDataProvider implements vscode.TreeDataProvider { private _lessons: Lesson[] = []; + private _onDidChangeTreeData: vscode.EventEmitter = new vscode.EventEmitter(); + readonly onDidChangeTreeData: vscode.Event = this._onDidChangeTreeData.event; constructor( private readonly _workspaceRoot: vscode.Uri, @@ -59,11 +62,14 @@ export class LessonsTreeDataProvider implements vscode.TreeDataProvider const metadataFilePath = path.join(filePath, metadataFile); const metadataFileContent = fs.readFileSync(metadataFilePath, 'utf8'); const parsedContent = grayMatter(metadataFileContent); + lesson.name = parsedContent.data.title; + lesson.metadata = { _path: metadataFilePath, ...(parsedContent.data as any), }; + lessons.push(lesson); } } @@ -72,9 +78,6 @@ export class LessonsTreeDataProvider implements vscode.TreeDataProvider return lessons; } - private _onDidChangeTreeData: vscode.EventEmitter = new vscode.EventEmitter(); - readonly onDidChangeTreeData: vscode.Event = this._onDidChangeTreeData.event; - refresh(): void { this._loadLessons(); this._onDidChangeTreeData.fire(undefined); From 578d257a24a433a8497decd2c418b721d08198fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B2an?= Date: Wed, 17 Jul 2024 16:30:05 +0000 Subject: [PATCH 2/5] fix: clarify use of @ts-ignore --- docs/tutorialkit.dev/src/components/Layout/Head.astro | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/tutorialkit.dev/src/components/Layout/Head.astro b/docs/tutorialkit.dev/src/components/Layout/Head.astro index 5f624360d..472a11bad 100644 --- a/docs/tutorialkit.dev/src/components/Layout/Head.astro +++ b/docs/tutorialkit.dev/src/components/Layout/Head.astro @@ -9,6 +9,15 @@ import Default from '@astrojs/starlight/components/Head.astro'; From 3a400ef9138b0a2611b15ed5950dbb2d89b15470 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Fri, 19 Jul 2024 10:12:00 +0300 Subject: [PATCH 5/5] fix: ts errors --- docs/tutorialkit.dev/src/components/Layout/Head.astro | 3 ++- docs/tutorialkit.dev/tsconfig.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/tutorialkit.dev/src/components/Layout/Head.astro b/docs/tutorialkit.dev/src/components/Layout/Head.astro index c01cac8c0..882b3bb01 100644 --- a/docs/tutorialkit.dev/src/components/Layout/Head.astro +++ b/docs/tutorialkit.dev/src/components/Layout/Head.astro @@ -21,9 +21,10 @@ import Default from '@astrojs/starlight/components/Head.astro'; // @ts-ignore -- see above window.dataLayer = window.dataLayer || []; + // @ts-ignore -- see above function gtag(...args) { // @ts-ignore -- see above - dataLayer.push(...args); + window.dataLayer.push(...args); } gtag('js', new Date()); diff --git a/docs/tutorialkit.dev/tsconfig.json b/docs/tutorialkit.dev/tsconfig.json index bfaaaef0e..b97438131 100644 --- a/docs/tutorialkit.dev/tsconfig.json +++ b/docs/tutorialkit.dev/tsconfig.json @@ -8,5 +8,6 @@ "jsx": "react-jsx", "jsxImportSource": "react", "types": ["@types/gtag.js"] - } + }, + "include": ["src"] }