Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
209 changes: 104 additions & 105 deletions frontend/auto-imports.d.ts

Large diffs are not rendered by default.

53 changes: 25 additions & 28 deletions frontend/components.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,51 +13,48 @@ declare module 'vue' {
Card: typeof import('primevue/card')['default']
Chip: typeof import('primevue/chip')['default']
Column: typeof import('primevue/column')['default']
ColumnPalette: typeof import('./src/components/ColumnPalette.vue')['default']
ColumnPalette: typeof import('./src/features/data-processing/components/ColumnPalette.vue')['default']
ConfirmDialog: typeof import('primevue/confirmdialog')['default']
CreateProject: typeof import('./src/pages/CreateProject.vue')['default']
CustomPaginator: typeof import('./src/components/CustomPaginator.vue')['default']
CreateProject: typeof import('./src/features/project-management/pages/CreateProject.vue')['default']
CustomPaginator: typeof import('./src/features/data-processing/components/CustomPaginator.vue')['default']
DataTable: typeof import('primevue/datatable')['default']
DataTabPanel: typeof import('./src/components/DataTabPanel.vue')['default']
DefaultLayout: typeof import('./src/layouts/DefaultLayout.vue')['default']
DataTabPanel: typeof import('./src/features/data-processing/components/DataTabPanel.vue')['default']
DefaultLayout: typeof import('./src/core/layouts/DefaultLayout.vue')['default']
FileUpload: typeof import('primevue/fileupload')['default']
Header: typeof import('./src/components/Header.vue')['default']
Header: typeof import('./src/shared/components/Header.vue')['default']
InputText: typeof import('primevue/inputtext')['default']
ItemEditor: typeof import('./src/components/ItemEditor.vue')['default']
LanguageDropZone: typeof import('./src/components/LanguageDropZone.vue')['default']
MainContent: typeof import('./src/components/MainContent.vue')['default']
OpenProject: typeof import('./src/pages/OpenProject.vue')['default']
ItemEditor: typeof import('./src/features/wikibase-schema/components/ItemEditor.vue')['default']
LanguageDropZone: typeof import('./src/features/data-processing/components/LanguageDropZone.vue')['default']
MainContent: typeof import('./src/shared/components/MainContent.vue')['default']
OpenProject: typeof import('./src/features/project-management/pages/OpenProject.vue')['default']
Paginator: typeof import('primevue/paginator')['default']
ProgressSpinner: typeof import('primevue/progressspinner')['default']
ProjectView: typeof import('./src/views/ProjectView.vue')['default']
PropertySelector: typeof import('./src/components/PropertySelector.vue')['default']
QualifiersEditor: typeof import('./src/components/QualifiersEditor.vue')['default']
ReferencesEditor: typeof import('./src/components/ReferencesEditor.vue')['default']
ProjectView: typeof import('./src/features/project-management/pages/ProjectView.vue')['default']
PropertySelector: typeof import('./src/features/wikibase-schema/components/PropertySelector.vue')['default']
QualifiersEditor: typeof import('./src/features/wikibase-schema/components/QualifiersEditor.vue')['default']
ReferencesEditor: typeof import('./src/features/wikibase-schema/components/ReferencesEditor.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
SchemaDropZone: typeof import('./src/components/SchemaDropZone.vue')['default']
SchemaTabPanel: typeof import('./src/components/SchemaTabPanel.vue')['default']
SchemaDropZone: typeof import('./src/features/wikibase-schema/components/SchemaDropZone.vue')['default']
SchemaTabPanel: typeof import('./src/features/wikibase-schema/components/SchemaTabPanel.vue')['default']
Select: typeof import('primevue/select')['default']
Sidebar: typeof import('./src/components/Sidebar.vue')['default']
StatementConfigEditor: typeof import('./src/components/StatementConfigEditor.vue')['default']
StatementEditor: typeof import('./src/components/StatementEditor.vue')['default']
StatementPreview: typeof import('./src/components/StatementPreview.vue')['default']
StatementsEditor: typeof import('./src/components/StatementsEditor.vue')['default']
Sidebar: typeof import('./src/shared/components/Sidebar.vue')['default']
StatementConfigEditor: typeof import('./src/features/wikibase-schema/components/StatementConfigEditor.vue')['default']
StatementEditor: typeof import('./src/features/wikibase-schema/components/StatementEditor.vue')['default']
StatementPreview: typeof import('./src/features/wikibase-schema/components/StatementPreview.vue')['default']
StatementsEditor: typeof import('./src/features/wikibase-schema/components/StatementsEditor.vue')['default']
Tab: typeof import('primevue/tab')['default']
TabList: typeof import('primevue/tablist')['default']
TabPanel: typeof import('primevue/tabpanel')['default']
TabPanels: typeof import('primevue/tabpanels')['default']
Tabs: typeof import('primevue/tabs')['default']
Tag: typeof import('primevue/tag')['default']
TermSection: typeof import('./src/components/TermSection.vue')['default']
TermsEditor: typeof import('./src/components/TermsEditor.vue')['default']
TermSection: typeof import('./src/features/wikibase-schema/components/TermSection.vue')['default']
TermsEditor: typeof import('./src/features/wikibase-schema/components/TermsEditor.vue')['default']
Toast: typeof import('primevue/toast')['default']
ToggleSwitch: typeof import('primevue/toggleswitch')['default']
ValidationDisplay: typeof import('./src/components/ValidationDisplay.vue')['default']
ValidationErrorDisplay: typeof import('./src/components/ValidationErrorDisplay.vue')['default']
ValidationStatusBar: typeof import('./src/components/ValidationStatusBar.vue')['default']
ValidationSuggestions: typeof import('./src/components/ValidationSuggestions.vue')['default']
WikibaseSchemaEditor: typeof import('./src/components/WikibaseSchemaEditor.vue')['default']
ValidationDisplay: typeof import('./src/features/wikibase-schema/components/ValidationDisplay.vue')['default']
WikibaseSchemaEditor: typeof import('./src/features/wikibase-schema/components/WikibaseSchemaEditor.vue')['default']
}
export interface GlobalDirectives {
Tooltip: typeof import('primevue/tooltip')['default']
Expand Down
Empty file added frontend/src/core/index.ts
Empty file.
File renamed without changes.
8 changes: 4 additions & 4 deletions frontend/src/router.ts → frontend/src/core/router/router.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { createRouter, createWebHashHistory } from 'vue-router'
const routes = [
{
path: '/',
component: () => import('@frontend/layouts/DefaultLayout.vue'),
component: () => import('@frontend/core/layouts/DefaultLayout.vue'),
children: [
{
path: '',
Expand All @@ -13,23 +13,23 @@ const routes = [
{
path: 'open',
name: 'open',
component: () => import('@frontend/pages/OpenProject.vue'),
component: () => import('@frontend/features/project-management/pages/OpenProject.vue'),
meta: {
title: 'Open Project',
},
},
{
path: 'create',
name: 'create',
component: () => import('@frontend/pages/CreateProject.vue'),
component: () => import('@frontend/features/project-management/pages/CreateProject.vue'),
meta: {
title: 'Create Project',
},
},
{
path: 'project/:id/:tab',
name: 'ProjectView',
component: () => import('@frontend/views/ProjectView.vue'),
component: () => import('@frontend/features/project-management/pages/ProjectView.vue'),
meta: {
title: 'Project View',
},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { ProjectColumn } from '@frontend/composables/useColumnGeneration'
import type { ColumnInfo } from '@frontend/types/wikibase-schema'
import type { ProjectColumn } from '@frontend/features/data-processing/composables/useColumnGeneration'
import type { ColumnInfo } from '@frontend/shared/types/wikibase-schema'

/**
* Composable for converting project columns to column info format
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { ColumnInfo, WikibaseDataType } from '@frontend/types/wikibase-schema'
import type { ColumnInfo, WikibaseDataType } from '@frontend/shared/types/wikibase-schema'

/**
* Data type configuration mapping
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { ref, readonly } from 'vue'
import type { WikibaseDataType, ColumnInfo } from '@frontend/types/wikibase-schema'
import { useColumnDataTypeIndicators } from '@frontend/composables/useColumnDataTypeIndicators'
import type { WikibaseDataType, ColumnInfo } from '@frontend/shared/types/wikibase-schema'
import { useColumnDataTypeIndicators } from '@frontend/features/data-processing/composables/useColumnDataTypeIndicators'

/**
* Composable for handling data type compatibility between database columns and Wikibase data types
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { ref, computed } from 'vue'
import type { ColumnMapping } from '@frontend/types/wikibase-schema'
import { useSchemaStore } from '@frontend/stores/schema.store'
import { useTermsEditor } from '@frontend/composables/useTermsEditor'
import type { ColumnMapping } from '@frontend/shared/types/wikibase-schema'
import { useSchemaStore } from '@frontend/features/wikibase-schema/stores/schema.store'
import { useTermsEditor } from '@frontend/features/wikibase-schema/composables/useTermsEditor'

/**
* Composable for handling language drop zone functionality
Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { defineStore } from 'pinia'
import { ref, computed } from 'vue'
import type { ColumnInfo } from '@frontend/types/wikibase-schema'
import type { DragState, DropTarget } from '@frontend/types/drag-drop'
import { useDataTypeCompatibility } from '@frontend/composables/useDataTypeCompatibility'
import type { ColumnInfo } from '@frontend/shared/types/wikibase-schema'
import type { DragState, DropTarget } from '@frontend/shared/types/drag-drop'
import { useDataTypeCompatibility } from '@frontend/features/data-processing/composables/useDataTypeCompatibility'

/**
* Pinia store for managing global drag and drop state in the schema editor
Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { ref, readonly } from 'vue'
import type { PropertyReference, WikibaseDataType } from '@frontend/types/wikibase-schema'
import type { PropertyReference, WikibaseDataType } from '@frontend/shared/types/wikibase-schema'

/**
* Composable for property selection with searchable dropdown functionality
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import { ref, computed, watch } from 'vue'
import { useDragDropStore } from '@frontend/stores/drag-drop.store'
import { useValidationStore } from '@frontend/stores/validation.store'
import { useValidationErrors } from '@frontend/composables/useValidationErrors'
import { useValidationCore } from '@frontend/composables/useValidationCore'
import { useDataTypeCompatibility } from '@frontend/composables/useDataTypeCompatibility'
import { useDragDropStore } from '@frontend/features/data-processing/stores/drag-drop.store'
import { useValidationStore } from '@frontend/features/wikibase-schema/stores/validation.store'
import { useValidationErrors } from '@frontend/features/wikibase-schema/composables/useValidationErrors'
import { useValidationCore } from '@frontend/features/wikibase-schema/composables/useValidationCore'
import { useDataTypeCompatibility } from '@frontend/features/data-processing/composables/useDataTypeCompatibility'
import type {
ColumnInfo,
ValidationError,
ValidationResult,
WikibaseDataType,
} from '@frontend/types/wikibase-schema'
import type { DropTarget, DropFeedback } from '@frontend/types/drag-drop'
} from '@frontend/shared/types/wikibase-schema'
import type { DropTarget, DropFeedback } from '@frontend/shared/types/drag-drop'

interface MappingInfo {
path: string
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import type {
ColumnInfo,
WikibaseDataType,
ReferenceSchemaMapping,
} from '@frontend/types/wikibase-schema'
} from '@frontend/shared/types/wikibase-schema'

/**
* Composable for handling reference-specific value mapping and citation data support
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { ApiError } from '@backend/types/error-schemas'
import type { WikibaseSchemaMapping } from '@frontend/types/wikibase-schema'
import type { WikibaseSchemaMapping } from '@frontend/shared/types/wikibase-schema'

export interface CreateSchemaRequest {
name: string
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import type {
StatementRank,
PropertyValueMap,
ReferenceSchemaMapping,
} from '@frontend/types/wikibase-schema'
} from '@frontend/shared/types/wikibase-schema'
import type { UUID } from 'crypto'
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

import type { UUID } from 'crypto' is invalid and will break builds

Node/Bun’s crypto module exports the randomUUID() function but does not export a UUID type alias.
TypeScript will raise “Module … has no exported member ‘UUID’”.

Proposed quick fix:

-import type { UUID } from 'crypto'
+// Define a simple UUID alias locally (or import from a dedicated util)
+type UUID = string

All UUID usages below then remain valid.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
import type { UUID } from 'crypto'
// Define a simple UUID alias locally (or import from a dedicated util)
type UUID = string
🤖 Prompt for AI Agents
In frontend/src/features/wikibase-schema/composables/useSchemaBuilder.ts at line
14, the import statement `import type { UUID } from 'crypto'` is invalid because
the 'crypto' module does not export a `UUID` type. Remove this import entirely
and instead define the `UUID` type locally as a string alias or use an
appropriate existing type alias for UUIDs. This will keep all `UUID` usages
valid without causing build errors.


/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { computed } from 'vue'
import { useSchemaStore } from '@frontend/stores/schema.store'
import { useValidationStore } from '@frontend/stores/validation.store'
import { useSchemaStore } from '@frontend/features/wikibase-schema/stores/schema.store'
import { useValidationStore } from '@frontend/features/wikibase-schema/stores/validation.store'

export interface SchemaCompletenessResult {
isComplete: boolean
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { ref, computed } from 'vue'
import type { ColumnInfo } from '@frontend/types/wikibase-schema'
import { useDragDropStore } from '@frontend/stores/drag-drop.store'
import { useSchemaStore } from '@frontend/stores/schema.store'
import { useDragDropHandlers } from '@frontend/composables/useDragDropHandlers'
import { useValidationCore } from '@frontend/composables/useValidationCore'
import { useDropZoneStyling } from '@frontend/composables/useDropZoneStyling'
import { useDragDropStore } from '@frontend/features/data-processing/stores/drag-drop.store'
import { useSchemaStore } from '@frontend/features/wikibase-schema/stores/schema.store'
import type { ColumnInfo } from '@frontend/shared/types/wikibase-schema'
import { useDragDropHandlers } from '@frontend/shared/composables/useDragDropHandlers'
import { useValidationCore } from '@frontend/features/wikibase-schema/composables/useValidationCore'
import { useDropZoneStyling } from '@frontend/shared/composables/useDropZoneStyling'
Comment on lines +2 to +7
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

WikibaseDataType is referenced but not imported – compilation will fail

acceptedTypes is typed as WikibaseDataType[], however the symbol is never imported.
Add it alongside ColumnInfo:

-import type { ColumnInfo } from '@frontend/shared/types/wikibase-schema'
+import type { ColumnInfo, WikibaseDataType } from '@frontend/shared/types/wikibase-schema'

Also applies to: 26-27

🤖 Prompt for AI Agents
In frontend/src/features/wikibase-schema/composables/useSchemaDropZone.ts around
lines 2 to 7 and also lines 26 to 27, the type WikibaseDataType is used but not
imported, causing compilation errors. Fix this by importing WikibaseDataType
from the appropriate module alongside ColumnInfo at the top of the file. Ensure
the import statement correctly references the source of WikibaseDataType to
resolve the missing symbol issue.


/**
* Simplified schema drop zone composable using shared validation and styling
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { watch, ref } from 'vue'
import { useSchemaStore } from '@frontend/stores/schema.store'
import { useValidationStore } from '@frontend/stores/validation.store'
import { useValidationErrors } from '@frontend/composables/useValidationErrors'
import { useSchemaCompletenessValidation } from '@frontend/composables/useSchemaCompletenessValidation'
import type { ValidationError } from '@frontend/types/wikibase-schema'
import { useSchemaStore } from '@frontend/features/wikibase-schema/stores/schema.store'
import { useValidationStore } from '@frontend/features/wikibase-schema/stores/validation.store'
import { useValidationErrors } from '@frontend/features/wikibase-schema/composables/useValidationErrors'
import { useSchemaCompletenessValidation } from '@frontend/features/wikibase-schema/composables/useSchemaCompletenessValidation'
import type { ValidationError } from '@frontend/shared/types/wikibase-schema'

/**
* Interface for validation status
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import type {
ValueMapping,
WikibaseDataType,
StatementRank,
} from '@frontend/types/wikibase-schema'
import { useSchemaStore } from '@frontend/stores/schema.store'
} from '@frontend/shared/types/wikibase-schema'
import { useSchemaStore } from '@frontend/features/wikibase-schema/stores/schema.store'

const createDefaultStatement = () => ({
property: null as PropertyReference | null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ import type {
ValidationError,
ValidationResult,
ValidationContext,
} from '@frontend/types/wikibase-schema'
import { useDataTypeCompatibility } from '@frontend/composables/useDataTypeCompatibility'
import { useValidationErrors } from '@frontend/composables/useValidationErrors'
} from '@frontend/shared/types/wikibase-schema'
import { useDataTypeCompatibility } from '@frontend/features/data-processing/composables/useDataTypeCompatibility'
import { useValidationErrors } from '@frontend/features/wikibase-schema/composables/useValidationErrors'

/**
* Composable for validating data type compatibility in statement values
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { ref, computed } from 'vue'
import { useDragDropStore } from '@frontend/stores/drag-drop.store'
import { useDragDropHandlers } from '@frontend/composables/useDragDropHandlers'
import type { ColumnInfo, WikibaseDataType } from '@frontend/types/wikibase-schema'
import { useDragDropStore } from '@frontend/features/data-processing/stores/drag-drop.store'
import { useDragDropHandlers } from '@frontend/shared/composables/useDragDropHandlers'
import type { ColumnInfo, WikibaseDataType } from '@frontend/shared/types/wikibase-schema'

/**
* Composable for handling statement drop zone functionality
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import type {
StatementRank,
WikibaseDataType,
ColumnInfo,
} from '@frontend/types/wikibase-schema'
import { useDataTypeCompatibility } from '@frontend/composables/useDataTypeCompatibility'
} from '@frontend/shared/types/wikibase-schema'
import { useDataTypeCompatibility } from '@frontend/features/data-processing/composables/useDataTypeCompatibility'

/**
* Composable for managing statement editor state and logic
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { PropertyReference, ValueMapping } from '@frontend/types/wikibase-schema'
import { useStatementDataTypeValidation } from '@frontend/composables/useStatementDataTypeValidation'
import type { PropertyReference, ValueMapping } from '@frontend/shared/types/wikibase-schema'
import { useStatementDataTypeValidation } from '@frontend/features/wikibase-schema/composables/useStatementDataTypeValidation'

/**
* Interface for validation display message
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { useDataTypeCompatibility } from '@frontend/composables/useDataTypeCompatibility'
import type { ColumnInfo } from '@frontend/types/wikibase-schema'
import type { DropTarget } from '@frontend/types/drag-drop'
import { useDataTypeCompatibility } from '@frontend/features/data-processing/composables/useDataTypeCompatibility'
import type { ColumnInfo } from '@frontend/shared/types/wikibase-schema'
import type { DropTarget } from '@frontend/shared/types/drag-drop'

interface CoreValidationResult {
isValid: boolean
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import type {
ValidationError,
ValidationErrorCode,
ValidationContext,
} from '@frontend/types/wikibase-schema'
import { ValidationMessages } from '@frontend/types/wikibase-schema'
} from '@frontend/shared/types/wikibase-schema'
import { ValidationMessages } from '@frontend/shared/types/wikibase-schema'

/**
* Composable for managing validation errors in the Wikibase Schema Editor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import type {
ColumnInfo,
WikibaseDataType,
PropertyReference,
} from '@frontend/types/wikibase-schema'
import { useDataTypeCompatibility } from '@frontend/composables/useDataTypeCompatibility'
} from '@frontend/shared/types/wikibase-schema'
import { useDataTypeCompatibility } from '@frontend/features/data-processing/composables/useDataTypeCompatibility'

/**
* Composable for handling value mapping configuration and validation
Expand Down
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import type {
ReferenceSchemaMapping,
Label,
ColumnMapping,
} from '@frontend/types/wikibase-schema'
} from '@frontend/shared/types/wikibase-schema'
import type { UUID } from 'crypto'
import { useSchemaBuilder } from '@frontend/composables/useSchemaBuilder'
import { useSchemaBuilder } from '@frontend/features/wikibase-schema/composables/useSchemaBuilder'
import { ItemId } from '@backend/types/wikibase-schema'

export const useSchemaStore = defineStore('schema', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import type {
ValidationError,
ValidationErrorCode,
ValidationResult,
} from '@frontend/types/wikibase-schema'
} from '@frontend/shared/types/wikibase-schema'

export interface ValidationRuleConfig {
id: string
Expand Down
4 changes: 2 additions & 2 deletions frontend/src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ import ConfirmationService from 'primevue/confirmationservice'
import 'primeicons/primeicons.css'

// Import your router and app
import router from '@frontend/router'
import router from '@frontend/core/router/router'
import App from '@frontend/App.vue'

// Import global styles
import '@frontend/assets/base.css'

// Import API plugin
import { ApiPlugin } from '@frontend/plugins/api'
import { ApiPlugin } from '@frontend/core/plugins/api'

const head = createHead()
const app = createApp(App as Component)
Expand Down
Loading