From 627981ea908a905121012adc041fc2845c644d92 Mon Sep 17 00:00:00 2001 From: Joshua Melville Date: Thu, 21 Nov 2024 11:36:02 +0200 Subject: [PATCH 1/4] fix sidebar generation --- apps/documentation/lib/writeSidebarJson.ts | 39 +- apps/documentation/public/sidebar.json | 848 ++++++++++----------- apps/documentation/public/sitemap-0.xml | 128 ++-- 3 files changed, 513 insertions(+), 502 deletions(-) diff --git a/apps/documentation/lib/writeSidebarJson.ts b/apps/documentation/lib/writeSidebarJson.ts index a6f0d6b..d908102 100644 --- a/apps/documentation/lib/writeSidebarJson.ts +++ b/apps/documentation/lib/writeSidebarJson.ts @@ -1,8 +1,8 @@ import "dotenv/config"; // This is essential here, because helper functions (below) use env variables, but they are not available in the Node.js environment without dotenv! This file is run directly in Node via tsc. import matter from "gray-matter"; -import { readFileSync, readdirSync, writeFileSync } from "node:fs"; +import { readdirSync, readFileSync, writeFileSync } from "node:fs"; import { join } from "node:path"; -import { type Locale, type TSideBar, locales } from "~/app/types"; +import { locales, type Locale, type SidebarLocaleDefinition, type TSideBar } from "~/app/types"; import { createFolderEntry, createPageEntry, @@ -25,7 +25,7 @@ function generateSidebarData() { // Set up initial structure for sidebar data. const sidebarData: TSideBar = locales.reduce((acc, locale) => { - acc[locale] = {} as TSideBar[Locale]; + acc[locale] = {} as SidebarLocaleDefinition; return acc; }, {} as TSideBar); @@ -34,16 +34,19 @@ function generateSidebarData() { for (const file of sortedFiles) { if (file.isDirectory()) { const metadata = getMetaDataForDirectory(join(file.path, file.name)); + const currentLocales = Object.keys(sidebarData); if (metadata.type === "project") { - for (const locale of Object.keys(sidebarData) as Locale[]) { + for (const l of currentLocales) { + const locale = l as Locale; + sidebarData[locale] = { ...sidebarData[locale], [file.name]: createProjectEntry(file, locale, metadata), }; } - return; + continue; } // If this is a folder, create a folder entry @@ -51,39 +54,45 @@ function generateSidebarData() { const nestedPath = getNestedPath(file.path); // Insert folder entry for each locale in the nested path - for (const locale of Object.keys(sidebarData) as Locale[]) { + for (const l of currentLocales) { + const locale = l as Locale; set(sidebarData[locale], [...nestedPath, file.name], createFolderEntry(file, locale, metadata)); } - return; + continue; } } // Only process files ending in .md or .mdx - if (!file.name.endsWith(".md") && !file.name.endsWith(".mdx")) return; + if (!file.name.endsWith(".md") && !file.name.endsWith(".mdx")) { + continue; + } // Determine locale based on file name (format is `index.en.mdx` or `index.en.md`) const locale = file.name.split(".")[1] as Locale | undefined; // If there's no locale, or the locale isn't included in the type, ignore it. if (!locale || !locales.includes(locale as Locale)) { + // eslint-disable-next-line no-console console.warn( `File ${file.name} is missing a locale or has a locale not defined in Locale. Locale is ${locale}. Skipping.`, ); - return; + continue; } - // create a key based on the filename without the locale or extension - // biome-ignore lint/style/noNonNullAssertion: filename is known to have a value here + // Create a key based on the filename without the locale or extension + // biome-ignore lint/style/noNonNullAssertion: structure is known const key = file.name.split(".")[0]!; - const nestedPath = getNestedPath(file.parentPath); + const nestedPath = getNestedPath(file.path); - const markdownFile = readFileSync(join(file.parentPath, file.name), "utf-8"); + const markdownFile = readFileSync(join(file.path, file.name), "utf-8"); const matterResult = matter(markdownFile); // If file has "hidden: true" in frontmatter, skip it - if (matterResult.data.hidden) return; + if (matterResult.data.hidden) { + continue; + } set(sidebarData[locale], [...nestedPath, key], createPageEntry(file, matterResult)); } @@ -96,5 +105,7 @@ try { writeFileSync(join(process.cwd(), "public", "sidebar.json"), JSON.stringify(sidebarData, null, 2), "utf-8"); } catch (e) { + // eslint-disable-next-line no-console console.log("Error writing sidebar data!", e); + throw e; } diff --git a/apps/documentation/public/sidebar.json b/apps/documentation/public/sidebar.json index 4bc7f5f..3ad5076 100644 --- a/apps/documentation/public/sidebar.json +++ b/apps/documentation/public/sidebar.json @@ -1,425 +1,425 @@ { - "en": { - "desktop": { - "type": "project", - "sourceFile": "/docs/desktop/index.en.mdx", - "label": "Desktop", - "children": { - "advanced-topics": { - "type": "folder", - "expanded": false, - "label": "Advanced Topics", - "navOrder": 50000, - "children": { - "network-canvas-graphml": { - "type": "page", - "sourceFile": "/docs/desktop/advanced-topics/network-canvas-graphml.en.md", - "label": "Network Canvas GraphML Format", - "navOrder": null - }, - "node-labelling": { - "type": "page", - "sourceFile": "/docs/desktop/advanced-topics/node-labelling.en.md", - "label": "Node Labelling", - "navOrder": null - }, - "protocol-file-format": { - "type": "page", - "sourceFile": "/docs/desktop/advanced-topics/protocol-file-format.en.md", - "label": "Protocol File Format", - "navOrder": null - }, - "protocol-schema-information": { - "type": "page", - "sourceFile": "/docs/desktop/advanced-topics/protocol-schema-information.en.mdx", - "label": "Protocol Schema Information", - "navOrder": null - } - } - }, - "getting-started": { - "type": "folder", - "expanded": true, - "label": "Getting Started", - "navOrder": 1, - "children": { - "choosing-hardware": { - "type": "page", - "sourceFile": "/docs/desktop/getting-started/choosing-hardware.en.md", - "label": "Choosing a Hardware Device for Interviewer", - "navOrder": null - }, - "configuring-devices": { - "type": "page", - "sourceFile": "/docs/desktop/getting-started/configuring-devices.en.mdx", - "label": "Configuring Devices Prior To Starting Data Collection", - "navOrder": null - }, - "installation-guide": { - "type": "page", - "sourceFile": "/docs/desktop/getting-started/installation-guide.en.md", - "label": "Installation Guide", - "navOrder": 3 - } - } - }, - "interface-documentation": { - "type": "folder", - "expanded": false, - "label": "Interface documentation", - "navOrder": null, - "children": { - "categorical-bin": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/categorical-bin.en.mdx", - "label": "Categorical Bin", - "navOrder": null - }, - "dyad-census": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/dyad-census.en.md", - "label": "Dyad Census", - "navOrder": null - }, - "ego-form": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/ego-form.en.md", - "label": "Ego Form", - "navOrder": null - }, - "information": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/information.en.mdx", - "label": "Information", - "navOrder": null - }, - "large-roster-name-generator": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/large-roster-name-generator.en.mdx", - "label": "Large Roster Name Generator", - "navOrder": null - }, - "name-generator-roster": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/name-generator-roster.en.mdx", - "label": "Name Generator for Roster Data", - "navOrder": null - }, - "name-generator-using-forms": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/name-generator-using-forms.en.mdx", - "label": "Name Generator using Forms", - "navOrder": null - }, - "name-generator-using-quick-add": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/name-generator-using-quick-add.en.mdx", - "label": "Name Generators using Quick Add", - "navOrder": null - }, - "narrative": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/narrative.en.md", - "label": "Narrative", - "navOrder": null - }, - "ordinal-bin": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/ordinal-bin.en.md", - "label": "Ordinal Bin", - "navOrder": null - }, - "per-alter-edge-form": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/per-alter-edge-form.en.mdx", - "label": "Per Alter Edge Form", - "navOrder": null - }, - "per-alter-form": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/per-alter-form.en.md", - "label": "Per Alter Form", - "navOrder": null - }, - "shared": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/shared.en.md", - "label": "Shared Interface Options", - "navOrder": null - }, - "small-roster-name-generator": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/small-roster-name-generator.en.mdx", - "label": "Small Roster Name Generator", - "navOrder": null - }, - "sociogram": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/sociogram.en.md", - "label": "Sociogram", - "navOrder": null - }, - "tie-strength-census": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/tie-strength-census.en.md", - "label": "Tie-Strength Census", - "navOrder": null - } - } - }, - "key-concepts": { - "type": "folder", - "expanded": false, - "label": "Key concepts", - "navOrder": null, - "children": { - "additional-variables": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/additional-variables.en.mdx", - "label": "Additional Variables", - "navOrder": null - }, - "codebook": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/codebook.en.mdx", - "label": "Codebook", - "navOrder": null - }, - "field-validation": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/field-validation.en.md", - "label": "Field Validation", - "navOrder": null - }, - "forms": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/forms.en.mdx", - "label": "Forms", - "navOrder": null - }, - "input-controls": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/input-controls.en.md", - "label": "Input Controls", - "navOrder": null - }, - "interfaces": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/interfaces.en.mdx", - "label": "Interfaces", - "navOrder": null - }, - "network-filtering": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/network-filtering.en.mdx", - "label": "Network Filtering", - "navOrder": null - }, - "preview-mode": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/preview-mode.en.md", - "label": "Preview Mode", - "navOrder": null - }, - "prompts": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/prompts.en.mdx", - "label": "Prompts", - "navOrder": null - }, - "resources": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/resources.en.mdx", - "label": "Resources", - "navOrder": null - }, - "skip-logic": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/skip-logic.en.mdx", - "label": "Skip Logic", - "navOrder": null - }, - "the-protocol-file": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/the-protocol-file.en.md", - "label": "The Protocol File", - "navOrder": null - } - } - }, - "project-information": { - "type": "folder", - "expanded": true, - "sourceFile": "/docs/desktop/project-information/project-overview.en.mdx", - "label": "Project Information", - "navOrder": 3, - "children": { - "citing-the-software": { - "type": "page", - "sourceFile": "/docs/desktop/project-information/citing-the-software.en.md", - "label": "Citing the Software", - "navOrder": 6 - }, - "contributing-code": { - "type": "page", - "sourceFile": "/docs/desktop/project-information/contributing-code.en.md", - "label": "Contributing Code", - "navOrder": null - }, - "faq": { - "type": "page", - "sourceFile": "/docs/desktop/project-information/faq.en.md", - "label": "Frequently Asked Questions", - "navOrder": 5 - }, - "irb-best-practices": { - "type": "page", - "sourceFile": "/docs/desktop/project-information/irb-best-practices.en.md", - "label": "IRB and Security Best Practices", - "navOrder": null - }, - "project-overview": { - "type": "page", - "sourceFile": "/docs/desktop/project-information/project-overview.en.mdx", - "label": "Project Overview", - "navOrder": 2 - }, - "requests-for-collaboration": { - "type": "page", - "sourceFile": "/docs/desktop/project-information/requests-for-collaboration.en.md", - "label": "Requests for Collaboration", - "navOrder": null - }, - "security-model": { - "type": "page", - "sourceFile": "/docs/desktop/project-information/security-model.en.md", - "label": "Overview of Security Model", - "navOrder": null - } - } - }, - "tutorials": { - "type": "folder", - "expanded": true, - "label": "Tutorials", - "navOrder": 2, - "children": { - "building-a-protocol": { - "type": "page", - "sourceFile": "/docs/desktop/tutorials/building-a-protocol.en.mdx", - "label": "Building a protocol using Architect", - "navOrder": 2 - }, - "protocol-and-data-workflows": { - "type": "page", - "sourceFile": "/docs/desktop/tutorials/protocol-and-data-workflows.en.mdx", - "label": "Protocol and Data Workflows", - "navOrder": 3 - }, - "using-interviewer": { - "type": "page", - "sourceFile": "/docs/desktop/tutorials/using-interviewer.en.mdx", - "label": "Using Interviewer", - "navOrder": 1 - }, - "working-with-data": { - "type": "page", - "sourceFile": "/docs/desktop/tutorials/working-with-data.en.mdx", - "label": "Working with Network Canvas data in R", - "navOrder": null - }, - "working-with-rosters": { - "type": "page", - "sourceFile": "/docs/desktop/tutorials/working-with-rosters.en.md", - "label": "Working with Roster Data", - "navOrder": null - } - } - } - } - }, - "fresco": { - "type": "project", - "sourceFile": "/docs/fresco/about.en.mdx", - "label": "Fresco", - "children": { - "about": { - "type": "page", - "sourceFile": "/docs/fresco/about.en.mdx", - "label": "About Fresco", - "navOrder": 1 - }, - "advanced-topics": { - "type": "folder", - "expanded": true, - "label": "Advanced Topics", - "navOrder": null, - "children": { - "integration": { - "type": "page", - "sourceFile": "/docs/fresco/advanced-topics/integration.en.mdx", - "label": "Integration with other survey tools", - "navOrder": null - } - } - }, - "deployment": { - "type": "folder", - "expanded": true, - "label": "Deployment", - "navOrder": 5, - "children": { - "advanced": { - "type": "page", - "sourceFile": "/docs/fresco/deployment/advanced.en.mdx", - "label": "Advanced Deployment", - "navOrder": null - }, - "cloud-pricing": { - "type": "page", - "sourceFile": "/docs/fresco/deployment/cloud-pricing.en.md", - "label": "Cloud Pricing", - "navOrder": 6 - }, - "guide": { - "type": "page", - "sourceFile": "/docs/fresco/deployment/guide.en.mdx", - "label": "Deployment Guide", - "navOrder": 1 - }, - "troubleshooting": { - "type": "page", - "sourceFile": "/docs/fresco/deployment/troubleshooting.en.mdx", - "label": "Troubleshooting", - "navOrder": 3 - }, - "upgrading": { - "type": "page", - "sourceFile": "/docs/fresco/deployment/upgrading.en.mdx", - "label": "Upgrading Fresco", - "navOrder": 5 - } - } - }, - "faq": { - "type": "page", - "sourceFile": "/docs/fresco/faq.en.mdx", - "label": "Frequently Asked Questions", - "navOrder": 3 - }, - "sandbox": { - "type": "page", - "sourceFile": "/docs/fresco/sandbox.en.mdx", - "label": "Sandbox", - "navOrder": 3 - }, - "using-fresco": { - "type": "page", - "sourceFile": "/docs/fresco/using-fresco.en.mdx", - "label": "Using Fresco", - "navOrder": 2 - } - } - } - } -} + "en": { + "desktop": { + "type": "project", + "sourceFile": "/docs/desktop/index.en.mdx", + "label": "Desktop", + "children": { + "advanced-topics": { + "type": "folder", + "expanded": false, + "label": "Advanced Topics", + "navOrder": 50000, + "children": { + "network-canvas-graphml": { + "type": "page", + "sourceFile": "/docs/desktop/advanced-topics/network-canvas-graphml.en.md", + "label": "Network Canvas GraphML Format", + "navOrder": null + }, + "node-labelling": { + "type": "page", + "sourceFile": "/docs/desktop/advanced-topics/node-labelling.en.md", + "label": "Node Labelling", + "navOrder": null + }, + "protocol-file-format": { + "type": "page", + "sourceFile": "/docs/desktop/advanced-topics/protocol-file-format.en.md", + "label": "Protocol File Format", + "navOrder": null + }, + "protocol-schema-information": { + "type": "page", + "sourceFile": "/docs/desktop/advanced-topics/protocol-schema-information.en.mdx", + "label": "Protocol Schema Information", + "navOrder": null + } + } + }, + "getting-started": { + "type": "folder", + "expanded": true, + "label": "Getting Started", + "navOrder": 1, + "children": { + "choosing-hardware": { + "type": "page", + "sourceFile": "/docs/desktop/getting-started/choosing-hardware.en.md", + "label": "Choosing a Hardware Device for Interviewer", + "navOrder": null + }, + "configuring-devices": { + "type": "page", + "sourceFile": "/docs/desktop/getting-started/configuring-devices.en.mdx", + "label": "Configuring Devices Prior To Starting Data Collection", + "navOrder": null + }, + "installation-guide": { + "type": "page", + "sourceFile": "/docs/desktop/getting-started/installation-guide.en.md", + "label": "Installation Guide", + "navOrder": 3 + } + } + }, + "interface-documentation": { + "type": "folder", + "expanded": false, + "label": "Interface documentation", + "navOrder": null, + "children": { + "categorical-bin": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/categorical-bin.en.mdx", + "label": "Categorical Bin", + "navOrder": null + }, + "dyad-census": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/dyad-census.en.md", + "label": "Dyad Census", + "navOrder": null + }, + "ego-form": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/ego-form.en.md", + "label": "Ego Form", + "navOrder": null + }, + "information": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/information.en.mdx", + "label": "Information", + "navOrder": null + }, + "large-roster-name-generator": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/large-roster-name-generator.en.mdx", + "label": "Large Roster Name Generator", + "navOrder": null + }, + "name-generator-roster": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/name-generator-roster.en.mdx", + "label": "Name Generator for Roster Data", + "navOrder": null + }, + "name-generator-using-forms": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/name-generator-using-forms.en.mdx", + "label": "Name Generator using Forms", + "navOrder": null + }, + "name-generator-using-quick-add": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/name-generator-using-quick-add.en.mdx", + "label": "Name Generators using Quick Add", + "navOrder": null + }, + "narrative": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/narrative.en.md", + "label": "Narrative", + "navOrder": null + }, + "ordinal-bin": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/ordinal-bin.en.md", + "label": "Ordinal Bin", + "navOrder": null + }, + "per-alter-edge-form": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/per-alter-edge-form.en.mdx", + "label": "Per Alter Edge Form", + "navOrder": null + }, + "per-alter-form": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/per-alter-form.en.md", + "label": "Per Alter Form", + "navOrder": null + }, + "shared": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/shared.en.md", + "label": "Shared Interface Options", + "navOrder": null + }, + "small-roster-name-generator": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/small-roster-name-generator.en.mdx", + "label": "Small Roster Name Generator", + "navOrder": null + }, + "sociogram": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/sociogram.en.md", + "label": "Sociogram", + "navOrder": null + }, + "tie-strength-census": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/tie-strength-census.en.md", + "label": "Tie-Strength Census", + "navOrder": null + } + } + }, + "key-concepts": { + "type": "folder", + "expanded": false, + "label": "Key concepts", + "navOrder": null, + "children": { + "additional-variables": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/additional-variables.en.mdx", + "label": "Additional Variables", + "navOrder": null + }, + "codebook": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/codebook.en.mdx", + "label": "Codebook", + "navOrder": null + }, + "field-validation": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/field-validation.en.md", + "label": "Field Validation", + "navOrder": null + }, + "forms": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/forms.en.mdx", + "label": "Forms", + "navOrder": null + }, + "input-controls": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/input-controls.en.md", + "label": "Input Controls", + "navOrder": null + }, + "interfaces": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/interfaces.en.mdx", + "label": "Interfaces", + "navOrder": null + }, + "network-filtering": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/network-filtering.en.mdx", + "label": "Network Filtering", + "navOrder": null + }, + "preview-mode": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/preview-mode.en.md", + "label": "Preview Mode", + "navOrder": null + }, + "prompts": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/prompts.en.mdx", + "label": "Prompts", + "navOrder": null + }, + "resources": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/resources.en.mdx", + "label": "Resources", + "navOrder": null + }, + "skip-logic": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/skip-logic.en.mdx", + "label": "Skip Logic", + "navOrder": null + }, + "the-protocol-file": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/the-protocol-file.en.md", + "label": "The Protocol File", + "navOrder": null + } + } + }, + "project-information": { + "type": "folder", + "expanded": true, + "sourceFile": "/docs/desktop/project-information/project-overview.en.mdx", + "label": "Project Information", + "navOrder": 3, + "children": { + "citing-the-software": { + "type": "page", + "sourceFile": "/docs/desktop/project-information/citing-the-software.en.md", + "label": "Citing the Software", + "navOrder": 6 + }, + "contributing-code": { + "type": "page", + "sourceFile": "/docs/desktop/project-information/contributing-code.en.md", + "label": "Contributing Code", + "navOrder": null + }, + "faq": { + "type": "page", + "sourceFile": "/docs/desktop/project-information/faq.en.md", + "label": "Frequently Asked Questions", + "navOrder": 5 + }, + "irb-best-practices": { + "type": "page", + "sourceFile": "/docs/desktop/project-information/irb-best-practices.en.md", + "label": "IRB and Security Best Practices", + "navOrder": null + }, + "project-overview": { + "type": "page", + "sourceFile": "/docs/desktop/project-information/project-overview.en.mdx", + "label": "Project Overview", + "navOrder": 2 + }, + "requests-for-collaboration": { + "type": "page", + "sourceFile": "/docs/desktop/project-information/requests-for-collaboration.en.md", + "label": "Requests for Collaboration", + "navOrder": null + }, + "security-model": { + "type": "page", + "sourceFile": "/docs/desktop/project-information/security-model.en.md", + "label": "Overview of Security Model", + "navOrder": null + } + } + }, + "tutorials": { + "type": "folder", + "expanded": true, + "label": "Tutorials", + "navOrder": 2, + "children": { + "building-a-protocol": { + "type": "page", + "sourceFile": "/docs/desktop/tutorials/building-a-protocol.en.mdx", + "label": "Building a protocol using Architect", + "navOrder": 2 + }, + "protocol-and-data-workflows": { + "type": "page", + "sourceFile": "/docs/desktop/tutorials/protocol-and-data-workflows.en.mdx", + "label": "Protocol and Data Workflows", + "navOrder": 3 + }, + "using-interviewer": { + "type": "page", + "sourceFile": "/docs/desktop/tutorials/using-interviewer.en.mdx", + "label": "Using Interviewer", + "navOrder": 1 + }, + "working-with-data": { + "type": "page", + "sourceFile": "/docs/desktop/tutorials/working-with-data.en.mdx", + "label": "Working with Network Canvas data in R", + "navOrder": null + }, + "working-with-rosters": { + "type": "page", + "sourceFile": "/docs/desktop/tutorials/working-with-rosters.en.md", + "label": "Working with Roster Data", + "navOrder": null + } + } + } + } + }, + "fresco": { + "type": "project", + "sourceFile": "/docs/fresco/about.en.mdx", + "label": "Fresco", + "children": { + "about": { + "type": "page", + "sourceFile": "/docs/fresco/about.en.mdx", + "label": "About Fresco", + "navOrder": 1 + }, + "advanced-topics": { + "type": "folder", + "expanded": true, + "label": "Advanced Topics", + "navOrder": null, + "children": { + "integration": { + "type": "page", + "sourceFile": "/docs/fresco/advanced-topics/integration.en.mdx", + "label": "Integration with other survey tools", + "navOrder": null + } + } + }, + "deployment": { + "type": "folder", + "expanded": true, + "label": "Deployment", + "navOrder": 5, + "children": { + "advanced": { + "type": "page", + "sourceFile": "/docs/fresco/deployment/advanced.en.mdx", + "label": "Advanced Deployment", + "navOrder": null + }, + "cloud-pricing": { + "type": "page", + "sourceFile": "/docs/fresco/deployment/cloud-pricing.en.md", + "label": "Cloud Pricing", + "navOrder": 6 + }, + "guide": { + "type": "page", + "sourceFile": "/docs/fresco/deployment/guide.en.mdx", + "label": "Deployment Guide", + "navOrder": 1 + }, + "troubleshooting": { + "type": "page", + "sourceFile": "/docs/fresco/deployment/troubleshooting.en.mdx", + "label": "Troubleshooting", + "navOrder": 3 + }, + "upgrading": { + "type": "page", + "sourceFile": "/docs/fresco/deployment/upgrading.en.mdx", + "label": "Upgrading Fresco", + "navOrder": 5 + } + } + }, + "faq": { + "type": "page", + "sourceFile": "/docs/fresco/faq.en.mdx", + "label": "Frequently Asked Questions", + "navOrder": 3 + }, + "sandbox": { + "type": "page", + "sourceFile": "/docs/fresco/sandbox.en.mdx", + "label": "Sandbox", + "navOrder": 3 + }, + "using-fresco": { + "type": "page", + "sourceFile": "/docs/fresco/using-fresco.en.mdx", + "label": "Using Fresco", + "navOrder": 2 + } + } + } + } +} \ No newline at end of file diff --git a/apps/documentation/public/sitemap-0.xml b/apps/documentation/public/sitemap-0.xml index b148fd2..a86bcbb 100644 --- a/apps/documentation/public/sitemap-0.xml +++ b/apps/documentation/public/sitemap-0.xml @@ -1,67 +1,67 @@ -https://documentation.networkcanvas.com/manifest.webmanifest2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/icon.svg2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/advanced-topics/network-canvas-graphml2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/advanced-topics/node-labelling2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/advanced-topics/protocol-file-format2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/advanced-topics/protocol-schema-information2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/getting-started/choosing-hardware2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/getting-started/configuring-devices2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/getting-started/installation-guide2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/categorical-bin2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/dyad-census2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/ego-form2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/information2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/large-roster-name-generator2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/name-generator-roster2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/name-generator-using-forms2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/name-generator-using-quick-add2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/narrative2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/ordinal-bin2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/per-alter-edge-form2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/per-alter-form2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/shared2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/small-roster-name-generator2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/sociogram2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/tie-strength-census2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/additional-variables2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/codebook2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/field-validation2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/forms2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/input-controls2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/interfaces2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/network-filtering2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/preview-mode2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/prompts2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/resources2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/skip-logic2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/the-protocol-file2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/project-information2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/project-information/citing-the-software2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/project-information/contributing-code2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/project-information/faq2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/project-information/irb-best-practices2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/project-information/project-overview2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/project-information/requests-for-collaboration2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/project-information/security-model2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/tutorials/building-a-protocol2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/tutorials/protocol-and-data-workflows2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/tutorials/using-interviewer2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/tutorials/working-with-data2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/tutorials/working-with-rosters2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco/about2024-11-20T19:47:48.015Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco/advanced-topics/integration2024-11-20T19:47:48.015Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco/deployment/advanced2024-11-20T19:47:48.015Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco/deployment/cloud-pricing2024-11-20T19:47:48.015Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco/deployment/guide2024-11-20T19:47:48.015Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco/deployment/troubleshooting2024-11-20T19:47:48.015Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco/deployment/upgrading2024-11-20T19:47:48.015Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco/faq2024-11-20T19:47:48.015Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco/sandbox2024-11-20T19:47:48.015Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco/using-fresco2024-11-20T19:47:48.015Zdaily0.7 +https://documentation.networkcanvas.com/icon.svg2024-11-21T09:35:52.966Zdaily0.7 +https://documentation.networkcanvas.com2024-11-21T09:35:52.966Zdaily0.7 +https://documentation.networkcanvas.com/en2024-11-21T09:35:52.966Zdaily0.7 +https://documentation.networkcanvas.com/manifest.webmanifest2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/advanced-topics/network-canvas-graphml2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/advanced-topics/node-labelling2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/advanced-topics/protocol-file-format2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/advanced-topics/protocol-schema-information2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/getting-started/choosing-hardware2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/getting-started/configuring-devices2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/getting-started/installation-guide2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/categorical-bin2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/dyad-census2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/ego-form2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/information2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/large-roster-name-generator2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/name-generator-roster2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/name-generator-using-forms2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/name-generator-using-quick-add2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/narrative2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/ordinal-bin2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/per-alter-edge-form2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/per-alter-form2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/shared2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/small-roster-name-generator2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/sociogram2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/tie-strength-census2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/additional-variables2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/codebook2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/field-validation2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/forms2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/input-controls2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/interfaces2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/network-filtering2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/preview-mode2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/prompts2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/resources2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/skip-logic2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/the-protocol-file2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/project-information2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/project-information/citing-the-software2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/project-information/contributing-code2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/project-information/faq2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/project-information/irb-best-practices2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/project-information/project-overview2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/project-information/requests-for-collaboration2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/project-information/security-model2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/tutorials/building-a-protocol2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/tutorials/protocol-and-data-workflows2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/tutorials/using-interviewer2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/tutorials/working-with-data2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/tutorials/working-with-rosters2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco/about2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco/advanced-topics/integration2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco/deployment/advanced2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco/deployment/cloud-pricing2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco/deployment/guide2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco/deployment/troubleshooting2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco/deployment/upgrading2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco/faq2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco/sandbox2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco/using-fresco2024-11-21T09:35:52.967Zdaily0.7 \ No newline at end of file From 90a16399e5599fa9acc19c8a6c9a17bb3eb7c9d2 Mon Sep 17 00:00:00 2001 From: Joshua Melville Date: Thu, 21 Nov 2024 11:45:30 +0200 Subject: [PATCH 2/4] ignore anything in the public directory --- .vscode/settings.json | 10 +- apps/documentation/lib/writeSidebarJson.ts | 2 +- apps/documentation/public/sidebar.json | 846 ++++++++++----------- biome.json | 3 + 4 files changed, 435 insertions(+), 426 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index fe28509..5a17fe8 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,10 @@ { "typescript.tsdk": "./node_modules/typescript/lib", "typescript.enablePromptUseWorkspaceTsdk": true, - "cSpell.words": ["netcanvas", "Tipbox"], + "cSpell.words": [ + "netcanvas", + "Tipbox" + ], "editor.defaultFormatter": "biomejs.biome", "[typescriptreact]": { "editor.defaultFormatter": "biomejs.biome" @@ -12,5 +15,8 @@ "editor.codeActionsOnSave": { "source.organizeImports": "always", "source.fixAll": "always" + }, + "[json]": { + "editor.defaultFormatter": "biomejs.biome" } -} +} \ No newline at end of file diff --git a/apps/documentation/lib/writeSidebarJson.ts b/apps/documentation/lib/writeSidebarJson.ts index d908102..ead2c44 100644 --- a/apps/documentation/lib/writeSidebarJson.ts +++ b/apps/documentation/lib/writeSidebarJson.ts @@ -103,7 +103,7 @@ function generateSidebarData() { try { const sidebarData = generateSidebarData(); - writeFileSync(join(process.cwd(), "public", "sidebar.json"), JSON.stringify(sidebarData, null, 2), "utf-8"); + writeFileSync(join(process.cwd(), "public", "sidebar.json"), JSON.stringify(sidebarData, null, "\t"), "utf-8"); } catch (e) { // eslint-disable-next-line no-console console.log("Error writing sidebar data!", e); diff --git a/apps/documentation/public/sidebar.json b/apps/documentation/public/sidebar.json index 3ad5076..d8ef199 100644 --- a/apps/documentation/public/sidebar.json +++ b/apps/documentation/public/sidebar.json @@ -1,425 +1,425 @@ { - "en": { - "desktop": { - "type": "project", - "sourceFile": "/docs/desktop/index.en.mdx", - "label": "Desktop", - "children": { - "advanced-topics": { - "type": "folder", - "expanded": false, - "label": "Advanced Topics", - "navOrder": 50000, - "children": { - "network-canvas-graphml": { - "type": "page", - "sourceFile": "/docs/desktop/advanced-topics/network-canvas-graphml.en.md", - "label": "Network Canvas GraphML Format", - "navOrder": null - }, - "node-labelling": { - "type": "page", - "sourceFile": "/docs/desktop/advanced-topics/node-labelling.en.md", - "label": "Node Labelling", - "navOrder": null - }, - "protocol-file-format": { - "type": "page", - "sourceFile": "/docs/desktop/advanced-topics/protocol-file-format.en.md", - "label": "Protocol File Format", - "navOrder": null - }, - "protocol-schema-information": { - "type": "page", - "sourceFile": "/docs/desktop/advanced-topics/protocol-schema-information.en.mdx", - "label": "Protocol Schema Information", - "navOrder": null - } - } - }, - "getting-started": { - "type": "folder", - "expanded": true, - "label": "Getting Started", - "navOrder": 1, - "children": { - "choosing-hardware": { - "type": "page", - "sourceFile": "/docs/desktop/getting-started/choosing-hardware.en.md", - "label": "Choosing a Hardware Device for Interviewer", - "navOrder": null - }, - "configuring-devices": { - "type": "page", - "sourceFile": "/docs/desktop/getting-started/configuring-devices.en.mdx", - "label": "Configuring Devices Prior To Starting Data Collection", - "navOrder": null - }, - "installation-guide": { - "type": "page", - "sourceFile": "/docs/desktop/getting-started/installation-guide.en.md", - "label": "Installation Guide", - "navOrder": 3 - } - } - }, - "interface-documentation": { - "type": "folder", - "expanded": false, - "label": "Interface documentation", - "navOrder": null, - "children": { - "categorical-bin": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/categorical-bin.en.mdx", - "label": "Categorical Bin", - "navOrder": null - }, - "dyad-census": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/dyad-census.en.md", - "label": "Dyad Census", - "navOrder": null - }, - "ego-form": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/ego-form.en.md", - "label": "Ego Form", - "navOrder": null - }, - "information": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/information.en.mdx", - "label": "Information", - "navOrder": null - }, - "large-roster-name-generator": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/large-roster-name-generator.en.mdx", - "label": "Large Roster Name Generator", - "navOrder": null - }, - "name-generator-roster": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/name-generator-roster.en.mdx", - "label": "Name Generator for Roster Data", - "navOrder": null - }, - "name-generator-using-forms": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/name-generator-using-forms.en.mdx", - "label": "Name Generator using Forms", - "navOrder": null - }, - "name-generator-using-quick-add": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/name-generator-using-quick-add.en.mdx", - "label": "Name Generators using Quick Add", - "navOrder": null - }, - "narrative": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/narrative.en.md", - "label": "Narrative", - "navOrder": null - }, - "ordinal-bin": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/ordinal-bin.en.md", - "label": "Ordinal Bin", - "navOrder": null - }, - "per-alter-edge-form": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/per-alter-edge-form.en.mdx", - "label": "Per Alter Edge Form", - "navOrder": null - }, - "per-alter-form": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/per-alter-form.en.md", - "label": "Per Alter Form", - "navOrder": null - }, - "shared": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/shared.en.md", - "label": "Shared Interface Options", - "navOrder": null - }, - "small-roster-name-generator": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/small-roster-name-generator.en.mdx", - "label": "Small Roster Name Generator", - "navOrder": null - }, - "sociogram": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/sociogram.en.md", - "label": "Sociogram", - "navOrder": null - }, - "tie-strength-census": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/tie-strength-census.en.md", - "label": "Tie-Strength Census", - "navOrder": null - } - } - }, - "key-concepts": { - "type": "folder", - "expanded": false, - "label": "Key concepts", - "navOrder": null, - "children": { - "additional-variables": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/additional-variables.en.mdx", - "label": "Additional Variables", - "navOrder": null - }, - "codebook": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/codebook.en.mdx", - "label": "Codebook", - "navOrder": null - }, - "field-validation": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/field-validation.en.md", - "label": "Field Validation", - "navOrder": null - }, - "forms": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/forms.en.mdx", - "label": "Forms", - "navOrder": null - }, - "input-controls": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/input-controls.en.md", - "label": "Input Controls", - "navOrder": null - }, - "interfaces": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/interfaces.en.mdx", - "label": "Interfaces", - "navOrder": null - }, - "network-filtering": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/network-filtering.en.mdx", - "label": "Network Filtering", - "navOrder": null - }, - "preview-mode": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/preview-mode.en.md", - "label": "Preview Mode", - "navOrder": null - }, - "prompts": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/prompts.en.mdx", - "label": "Prompts", - "navOrder": null - }, - "resources": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/resources.en.mdx", - "label": "Resources", - "navOrder": null - }, - "skip-logic": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/skip-logic.en.mdx", - "label": "Skip Logic", - "navOrder": null - }, - "the-protocol-file": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/the-protocol-file.en.md", - "label": "The Protocol File", - "navOrder": null - } - } - }, - "project-information": { - "type": "folder", - "expanded": true, - "sourceFile": "/docs/desktop/project-information/project-overview.en.mdx", - "label": "Project Information", - "navOrder": 3, - "children": { - "citing-the-software": { - "type": "page", - "sourceFile": "/docs/desktop/project-information/citing-the-software.en.md", - "label": "Citing the Software", - "navOrder": 6 - }, - "contributing-code": { - "type": "page", - "sourceFile": "/docs/desktop/project-information/contributing-code.en.md", - "label": "Contributing Code", - "navOrder": null - }, - "faq": { - "type": "page", - "sourceFile": "/docs/desktop/project-information/faq.en.md", - "label": "Frequently Asked Questions", - "navOrder": 5 - }, - "irb-best-practices": { - "type": "page", - "sourceFile": "/docs/desktop/project-information/irb-best-practices.en.md", - "label": "IRB and Security Best Practices", - "navOrder": null - }, - "project-overview": { - "type": "page", - "sourceFile": "/docs/desktop/project-information/project-overview.en.mdx", - "label": "Project Overview", - "navOrder": 2 - }, - "requests-for-collaboration": { - "type": "page", - "sourceFile": "/docs/desktop/project-information/requests-for-collaboration.en.md", - "label": "Requests for Collaboration", - "navOrder": null - }, - "security-model": { - "type": "page", - "sourceFile": "/docs/desktop/project-information/security-model.en.md", - "label": "Overview of Security Model", - "navOrder": null - } - } - }, - "tutorials": { - "type": "folder", - "expanded": true, - "label": "Tutorials", - "navOrder": 2, - "children": { - "building-a-protocol": { - "type": "page", - "sourceFile": "/docs/desktop/tutorials/building-a-protocol.en.mdx", - "label": "Building a protocol using Architect", - "navOrder": 2 - }, - "protocol-and-data-workflows": { - "type": "page", - "sourceFile": "/docs/desktop/tutorials/protocol-and-data-workflows.en.mdx", - "label": "Protocol and Data Workflows", - "navOrder": 3 - }, - "using-interviewer": { - "type": "page", - "sourceFile": "/docs/desktop/tutorials/using-interviewer.en.mdx", - "label": "Using Interviewer", - "navOrder": 1 - }, - "working-with-data": { - "type": "page", - "sourceFile": "/docs/desktop/tutorials/working-with-data.en.mdx", - "label": "Working with Network Canvas data in R", - "navOrder": null - }, - "working-with-rosters": { - "type": "page", - "sourceFile": "/docs/desktop/tutorials/working-with-rosters.en.md", - "label": "Working with Roster Data", - "navOrder": null - } - } - } - } - }, - "fresco": { - "type": "project", - "sourceFile": "/docs/fresco/about.en.mdx", - "label": "Fresco", - "children": { - "about": { - "type": "page", - "sourceFile": "/docs/fresco/about.en.mdx", - "label": "About Fresco", - "navOrder": 1 - }, - "advanced-topics": { - "type": "folder", - "expanded": true, - "label": "Advanced Topics", - "navOrder": null, - "children": { - "integration": { - "type": "page", - "sourceFile": "/docs/fresco/advanced-topics/integration.en.mdx", - "label": "Integration with other survey tools", - "navOrder": null - } - } - }, - "deployment": { - "type": "folder", - "expanded": true, - "label": "Deployment", - "navOrder": 5, - "children": { - "advanced": { - "type": "page", - "sourceFile": "/docs/fresco/deployment/advanced.en.mdx", - "label": "Advanced Deployment", - "navOrder": null - }, - "cloud-pricing": { - "type": "page", - "sourceFile": "/docs/fresco/deployment/cloud-pricing.en.md", - "label": "Cloud Pricing", - "navOrder": 6 - }, - "guide": { - "type": "page", - "sourceFile": "/docs/fresco/deployment/guide.en.mdx", - "label": "Deployment Guide", - "navOrder": 1 - }, - "troubleshooting": { - "type": "page", - "sourceFile": "/docs/fresco/deployment/troubleshooting.en.mdx", - "label": "Troubleshooting", - "navOrder": 3 - }, - "upgrading": { - "type": "page", - "sourceFile": "/docs/fresco/deployment/upgrading.en.mdx", - "label": "Upgrading Fresco", - "navOrder": 5 - } - } - }, - "faq": { - "type": "page", - "sourceFile": "/docs/fresco/faq.en.mdx", - "label": "Frequently Asked Questions", - "navOrder": 3 - }, - "sandbox": { - "type": "page", - "sourceFile": "/docs/fresco/sandbox.en.mdx", - "label": "Sandbox", - "navOrder": 3 - }, - "using-fresco": { - "type": "page", - "sourceFile": "/docs/fresco/using-fresco.en.mdx", - "label": "Using Fresco", - "navOrder": 2 - } - } - } - } + "en": { + "desktop": { + "type": "project", + "sourceFile": "/docs/desktop/index.en.mdx", + "label": "Desktop", + "children": { + "advanced-topics": { + "type": "folder", + "expanded": false, + "label": "Advanced Topics", + "navOrder": 50000, + "children": { + "network-canvas-graphml": { + "type": "page", + "sourceFile": "/docs/desktop/advanced-topics/network-canvas-graphml.en.md", + "label": "Network Canvas GraphML Format", + "navOrder": null + }, + "node-labelling": { + "type": "page", + "sourceFile": "/docs/desktop/advanced-topics/node-labelling.en.md", + "label": "Node Labelling", + "navOrder": null + }, + "protocol-file-format": { + "type": "page", + "sourceFile": "/docs/desktop/advanced-topics/protocol-file-format.en.md", + "label": "Protocol File Format", + "navOrder": null + }, + "protocol-schema-information": { + "type": "page", + "sourceFile": "/docs/desktop/advanced-topics/protocol-schema-information.en.mdx", + "label": "Protocol Schema Information", + "navOrder": null + } + } + }, + "getting-started": { + "type": "folder", + "expanded": true, + "label": "Getting Started", + "navOrder": 1, + "children": { + "choosing-hardware": { + "type": "page", + "sourceFile": "/docs/desktop/getting-started/choosing-hardware.en.md", + "label": "Choosing a Hardware Device for Interviewer", + "navOrder": null + }, + "configuring-devices": { + "type": "page", + "sourceFile": "/docs/desktop/getting-started/configuring-devices.en.mdx", + "label": "Configuring Devices Prior To Starting Data Collection", + "navOrder": null + }, + "installation-guide": { + "type": "page", + "sourceFile": "/docs/desktop/getting-started/installation-guide.en.md", + "label": "Installation Guide", + "navOrder": 3 + } + } + }, + "interface-documentation": { + "type": "folder", + "expanded": false, + "label": "Interface documentation", + "navOrder": null, + "children": { + "categorical-bin": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/categorical-bin.en.mdx", + "label": "Categorical Bin", + "navOrder": null + }, + "dyad-census": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/dyad-census.en.md", + "label": "Dyad Census", + "navOrder": null + }, + "ego-form": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/ego-form.en.md", + "label": "Ego Form", + "navOrder": null + }, + "information": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/information.en.mdx", + "label": "Information", + "navOrder": null + }, + "large-roster-name-generator": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/large-roster-name-generator.en.mdx", + "label": "Large Roster Name Generator", + "navOrder": null + }, + "name-generator-roster": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/name-generator-roster.en.mdx", + "label": "Name Generator for Roster Data", + "navOrder": null + }, + "name-generator-using-forms": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/name-generator-using-forms.en.mdx", + "label": "Name Generator using Forms", + "navOrder": null + }, + "name-generator-using-quick-add": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/name-generator-using-quick-add.en.mdx", + "label": "Name Generators using Quick Add", + "navOrder": null + }, + "narrative": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/narrative.en.md", + "label": "Narrative", + "navOrder": null + }, + "ordinal-bin": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/ordinal-bin.en.md", + "label": "Ordinal Bin", + "navOrder": null + }, + "per-alter-edge-form": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/per-alter-edge-form.en.mdx", + "label": "Per Alter Edge Form", + "navOrder": null + }, + "per-alter-form": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/per-alter-form.en.md", + "label": "Per Alter Form", + "navOrder": null + }, + "shared": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/shared.en.md", + "label": "Shared Interface Options", + "navOrder": null + }, + "small-roster-name-generator": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/small-roster-name-generator.en.mdx", + "label": "Small Roster Name Generator", + "navOrder": null + }, + "sociogram": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/sociogram.en.md", + "label": "Sociogram", + "navOrder": null + }, + "tie-strength-census": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/tie-strength-census.en.md", + "label": "Tie-Strength Census", + "navOrder": null + } + } + }, + "key-concepts": { + "type": "folder", + "expanded": false, + "label": "Key concepts", + "navOrder": null, + "children": { + "additional-variables": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/additional-variables.en.mdx", + "label": "Additional Variables", + "navOrder": null + }, + "codebook": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/codebook.en.mdx", + "label": "Codebook", + "navOrder": null + }, + "field-validation": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/field-validation.en.md", + "label": "Field Validation", + "navOrder": null + }, + "forms": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/forms.en.mdx", + "label": "Forms", + "navOrder": null + }, + "input-controls": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/input-controls.en.md", + "label": "Input Controls", + "navOrder": null + }, + "interfaces": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/interfaces.en.mdx", + "label": "Interfaces", + "navOrder": null + }, + "network-filtering": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/network-filtering.en.mdx", + "label": "Network Filtering", + "navOrder": null + }, + "preview-mode": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/preview-mode.en.md", + "label": "Preview Mode", + "navOrder": null + }, + "prompts": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/prompts.en.mdx", + "label": "Prompts", + "navOrder": null + }, + "resources": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/resources.en.mdx", + "label": "Resources", + "navOrder": null + }, + "skip-logic": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/skip-logic.en.mdx", + "label": "Skip Logic", + "navOrder": null + }, + "the-protocol-file": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/the-protocol-file.en.md", + "label": "The Protocol File", + "navOrder": null + } + } + }, + "project-information": { + "type": "folder", + "expanded": true, + "sourceFile": "/docs/desktop/project-information/project-overview.en.mdx", + "label": "Project Information", + "navOrder": 3, + "children": { + "citing-the-software": { + "type": "page", + "sourceFile": "/docs/desktop/project-information/citing-the-software.en.md", + "label": "Citing the Software", + "navOrder": 6 + }, + "contributing-code": { + "type": "page", + "sourceFile": "/docs/desktop/project-information/contributing-code.en.md", + "label": "Contributing Code", + "navOrder": null + }, + "faq": { + "type": "page", + "sourceFile": "/docs/desktop/project-information/faq.en.md", + "label": "Frequently Asked Questions", + "navOrder": 5 + }, + "irb-best-practices": { + "type": "page", + "sourceFile": "/docs/desktop/project-information/irb-best-practices.en.md", + "label": "IRB and Security Best Practices", + "navOrder": null + }, + "project-overview": { + "type": "page", + "sourceFile": "/docs/desktop/project-information/project-overview.en.mdx", + "label": "Project Overview", + "navOrder": 2 + }, + "requests-for-collaboration": { + "type": "page", + "sourceFile": "/docs/desktop/project-information/requests-for-collaboration.en.md", + "label": "Requests for Collaboration", + "navOrder": null + }, + "security-model": { + "type": "page", + "sourceFile": "/docs/desktop/project-information/security-model.en.md", + "label": "Overview of Security Model", + "navOrder": null + } + } + }, + "tutorials": { + "type": "folder", + "expanded": true, + "label": "Tutorials", + "navOrder": 2, + "children": { + "building-a-protocol": { + "type": "page", + "sourceFile": "/docs/desktop/tutorials/building-a-protocol.en.mdx", + "label": "Building a protocol using Architect", + "navOrder": 2 + }, + "protocol-and-data-workflows": { + "type": "page", + "sourceFile": "/docs/desktop/tutorials/protocol-and-data-workflows.en.mdx", + "label": "Protocol and Data Workflows", + "navOrder": 3 + }, + "using-interviewer": { + "type": "page", + "sourceFile": "/docs/desktop/tutorials/using-interviewer.en.mdx", + "label": "Using Interviewer", + "navOrder": 1 + }, + "working-with-data": { + "type": "page", + "sourceFile": "/docs/desktop/tutorials/working-with-data.en.mdx", + "label": "Working with Network Canvas data in R", + "navOrder": null + }, + "working-with-rosters": { + "type": "page", + "sourceFile": "/docs/desktop/tutorials/working-with-rosters.en.md", + "label": "Working with Roster Data", + "navOrder": null + } + } + } + } + }, + "fresco": { + "type": "project", + "sourceFile": "/docs/fresco/about.en.mdx", + "label": "Fresco", + "children": { + "about": { + "type": "page", + "sourceFile": "/docs/fresco/about.en.mdx", + "label": "About Fresco", + "navOrder": 1 + }, + "advanced-topics": { + "type": "folder", + "expanded": true, + "label": "Advanced Topics", + "navOrder": null, + "children": { + "integration": { + "type": "page", + "sourceFile": "/docs/fresco/advanced-topics/integration.en.mdx", + "label": "Integration with other survey tools", + "navOrder": null + } + } + }, + "deployment": { + "type": "folder", + "expanded": true, + "label": "Deployment", + "navOrder": 5, + "children": { + "advanced": { + "type": "page", + "sourceFile": "/docs/fresco/deployment/advanced.en.mdx", + "label": "Advanced Deployment", + "navOrder": null + }, + "cloud-pricing": { + "type": "page", + "sourceFile": "/docs/fresco/deployment/cloud-pricing.en.md", + "label": "Cloud Pricing", + "navOrder": 6 + }, + "guide": { + "type": "page", + "sourceFile": "/docs/fresco/deployment/guide.en.mdx", + "label": "Deployment Guide", + "navOrder": 1 + }, + "troubleshooting": { + "type": "page", + "sourceFile": "/docs/fresco/deployment/troubleshooting.en.mdx", + "label": "Troubleshooting", + "navOrder": 3 + }, + "upgrading": { + "type": "page", + "sourceFile": "/docs/fresco/deployment/upgrading.en.mdx", + "label": "Upgrading Fresco", + "navOrder": 5 + } + } + }, + "faq": { + "type": "page", + "sourceFile": "/docs/fresco/faq.en.mdx", + "label": "Frequently Asked Questions", + "navOrder": 3 + }, + "sandbox": { + "type": "page", + "sourceFile": "/docs/fresco/sandbox.en.mdx", + "label": "Sandbox", + "navOrder": 3 + }, + "using-fresco": { + "type": "page", + "sourceFile": "/docs/fresco/using-fresco.en.mdx", + "label": "Using Fresco", + "navOrder": 2 + } + } + } + } } \ No newline at end of file diff --git a/biome.json b/biome.json index cd382fd..c019ae5 100644 --- a/biome.json +++ b/biome.json @@ -22,5 +22,8 @@ "clientKind": "git", "useIgnoreFile": true }, + "files": { + "ignore": ["public/**/*.*"] + }, "javascript": { "formatter": { "quoteStyle": "double" } } } From 37ad14fad3dffec19dd7ca982c79e073f4f73a3f Mon Sep 17 00:00:00 2001 From: Joshua Melville Date: Thu, 21 Nov 2024 11:52:00 +0200 Subject: [PATCH 3/4] wrestle with vscode formatters --- .vscode/settings.json | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 5a17fe8..4d12a31 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,10 +1,7 @@ { "typescript.tsdk": "./node_modules/typescript/lib", "typescript.enablePromptUseWorkspaceTsdk": true, - "cSpell.words": [ - "netcanvas", - "Tipbox" - ], + "cSpell.words": ["netcanvas", "Tipbox"], "editor.defaultFormatter": "biomejs.biome", "[typescriptreact]": { "editor.defaultFormatter": "biomejs.biome" @@ -19,4 +16,4 @@ "[json]": { "editor.defaultFormatter": "biomejs.biome" } -} \ No newline at end of file +} From e6eadc998e7d0e5e32351f4d68517f2271d60c08 Mon Sep 17 00:00:00 2001 From: Joshua Melville Date: Thu, 21 Nov 2024 11:54:08 +0200 Subject: [PATCH 4/4] remove unused settings --- .vscode/settings.json | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 4d12a31..7909412 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,17 +3,8 @@ "typescript.enablePromptUseWorkspaceTsdk": true, "cSpell.words": ["netcanvas", "Tipbox"], "editor.defaultFormatter": "biomejs.biome", - "[typescriptreact]": { - "editor.defaultFormatter": "biomejs.biome" - }, - "[typescript]": { - "editor.defaultFormatter": "biomejs.biome" - }, "editor.codeActionsOnSave": { "source.organizeImports": "always", "source.fixAll": "always" - }, - "[json]": { - "editor.defaultFormatter": "biomejs.biome" } }