Skip to content

Commit 65c8cec

Browse files
committed
Upgrade to latest deps + fix stricter typing issues
1 parent 9f88586 commit 65c8cec

23 files changed

+5435
-4209
lines changed

package-lock.json

Lines changed: 5339 additions & 4120 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@servicestack/vue",
3-
"version": "3.0.127",
3+
"version": "3.0.128",
44
"private": false,
55
"files": [
66
"dist"
@@ -21,11 +21,11 @@
2121
"build-minify": "uglifyjs dist/servicestack-vue.mjs --compress --mangle --webkit -o dist/servicestack-vue.min.mjs",
2222
"build-style": "postcss src/tailwind.css -o dist/styles.css",
2323
"build-copy": "npm run build && npm run copy-src && npm run copy-blazor-vue && npm run copy-comfy",
24-
"copy-src": "shx cp dist/servicestack-vue.min.mjs ../ServiceStack/ServiceStack/src/ServiceStack/js/servicestack-vue.mjs && shx cp dist/servicestack-vue.mjs ../ServiceStack/ServiceStack/tests/NorthwindAuto/wwwroot/lib/mjs/",
24+
"copy-src": "shx cp dist/servicestack-vue.min.mjs ../ServiceStack/ServiceStack/src/ServiceStack/js/servicestack-vue.mjs && shx cp dist/servicestack-vue.mjs ../ServiceStack/ServiceStack/tests/NorthwindAuto/wwwroot/lib/mjs/servicestack-vue.mjs",
2525
"copy-diffusion": "shx cp dist/servicestack-vue.m* ../../netcore/BlazorDiffusionVue/BlazorDiffusion/wwwroot/lib/mjs/ && shx cp dist/index.d.ts ../../netcore/BlazorDiffusionVue/BlazorDiffusion/wwwroot/lib/typings/@servicestack/vue/",
2626
"copy-creatorkit": "shx cp dist/servicestack-vue.m* ../../netcore/CreatorKit/CreatorKit/wwwroot/lib/mjs/ && shx cp dist/index.d.ts ../../netcore/CreatorKit/CreatorKit/wwwroot/lib/typings/@servicestack/vue/",
2727
"copy-aiserver": "shx cp dist/servicestack-vue.m* ../ai-server/AiServer/wwwroot/lib/mjs/ && shx cp dist/index.d.ts ../ai-server/AiServer/wwwroot/lib/typings/@servicestack/vue/",
28-
"copy-comfy": "shx cp dist/servicestack-vue.m* ../ComfyGateway/MyApp/wwwroot/lib/mjs/ && shx cp dist/index.d.ts ../ComfyGateway/MyApp/wwwroot/lib/typings/@servicestack/vue/",
28+
"copy-comfy": "shx cp dist/servicestack-vue.m* ../ubixar.com/MyApp/wwwroot/lib/mjs/ && shx cp dist/index.d.ts ../ubixar.com/MyApp/wwwroot/lib/typings/@servicestack/vue/ && shx cp dist/servicestack-vue.min.mjs ../ubixar.com/MyApp/wwwroot/js/servicestack-vue.mjs",
2929
"copy-blazor-vue": "shx mkdir -p ../../NetCoreTemplates/blazor-vue/MyApp/wwwroot/js/ && shx cp dist/servicestack-vue.m* ../../NetCoreTemplates/blazor-vue/MyApp/wwwroot/js/ && shx cp dist/servicestack-vue.m* ../../NetCoreTemplates/blazor-vue/MyApp/wwwroot/lib/mjs/ && shx cp dist/index.d.ts ../../NetCoreTemplates/blazor-vue/MyApp/wwwroot/lib/typings/@servicestack/vue/",
3030
"preview": "vite preview",
3131
"build-only": "vite build -l error",
@@ -34,29 +34,29 @@
3434
"release": "bump patch --commit --push --tag && npm publish"
3535
},
3636
"dependencies": {
37-
"@servicestack/client": "^2.1.2",
38-
"vue": "^3.4.19",
39-
"vue-router": "^4.2.5"
37+
"@servicestack/client": "^2.1.13",
38+
"vue": "^3.5.22",
39+
"vue-router": "^4.5.1"
4040
},
4141
"devDependencies": {
42-
"@tailwindcss/forms": "^0.5.3",
43-
"@types/node": "^18.11.19",
44-
"@vitejs/plugin-vue": "^4.4.0",
45-
"@vitest/browser": "^0.34.6",
46-
"@vue/test-utils": "^2.4.1",
47-
"@vue/tsconfig": "^0.1.3",
48-
"autoprefixer": "^10.4.13",
42+
"@tailwindcss/forms": "^0.5.10",
43+
"@types/node": "^24.6.2",
44+
"@vitejs/plugin-vue": "^6.0.1",
45+
"@vitest/browser": "^3.2.4",
46+
"@vue/test-utils": "^2.4.6",
47+
"@vue/tsconfig": "^0.8.1",
48+
"autoprefixer": "^10.4.21",
4949
"npm-run-all": "^4.1.5",
50-
"postcss": "^8.4.21",
51-
"postcss-cli": "^10.1.0",
52-
"shx": "^0.3.4",
53-
"tailwindcss": "^3.2.4",
54-
"typescript": "~4.9.5",
50+
"postcss": "^8.5.6",
51+
"postcss-cli": "^11.0.1",
52+
"shx": "^0.4.0",
53+
"tailwindcss": "^3.4.18",
54+
"typescript": "^5.9.3",
5555
"uglify-js": "^3.19.3",
56-
"vite": "^4.1.5",
56+
"vite": "^7.1.7",
5757
"vite-plugin-dts": "^4.5.4",
58-
"vitest": "^0.34.6",
59-
"vue-tsc": "^1.0.24",
60-
"webdriverio": "^8.35.1"
58+
"vitest": "^3.2.4",
59+
"vue-tsc": "^3.1.0",
60+
"webdriverio": "^9.20.0"
6161
}
6262
}

src/components/AutoQueryGrid.vue

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@
158158
<span class="mr-1 select-none">
159159
{{ label }}
160160
</span>
161-
<SettingsIcons :column="columns.find(x => x.name.toLowerCase() === column.toLowerCase())" :is-open="showFilters?.column.name === column" />
161+
<SettingsIcons :column="columns.find((x:Column) => x.name.toLowerCase() === column.toLowerCase())" :is-open="showFilters?.column.name === column" />
162162
</div>
163163
<div v-else class="flex justify-between items-center">
164164
<span class="mr-1 select-none">{{ label }}</span>
@@ -177,7 +177,7 @@
177177
import type { JsonServiceClient } from '@servicestack/client'
178178
import type { ApiPrefs, ApiResponse, Column, ColumnSettings, MetadataPropertyType, GridAllowOptions, GridShowOptions } from '@/types'
179179
import type { AutoQueryGridProps, AutoQueryGridEmits } from '@/components/types'
180-
import { computed, inject, nextTick, onMounted, ref, useSlots, getCurrentInstance } from 'vue'
180+
import { computed, inject, nextTick, onMounted, ref, useSlots, getCurrentInstance, type Slots } from 'vue'
181181
import { ApiResult, appendQueryString, combinePaths, delaySet, leftPart, mapGet, queryString, rightPart } from '@servicestack/client'
182182
import { Apis, createDto, getPrimaryKey, isComplexProp, typeProperties, useMetadata } from '@/use/metadata'
183183
import { a, grid } from './css'
@@ -238,7 +238,7 @@ function getTableRowClass(item:any, i:number) {
238238
return grid.getTableRowClass(props.tableStyle, i, isSelected, canUpdate)
239239
}
240240
241-
const slots = useSlots()
241+
const slots: Slots = useSlots()
242242
243243
//const dataModel = computed(() => typeOf(apis.value.AnyQuery!.dataModel.name))
244244
const viewModel = computed(() => typeOf(apis.value.AnyQuery!.viewModel?.name || apis.value.AnyQuery!.dataModel.name))
@@ -299,7 +299,7 @@ const properties = computed(() => typeProperties(typeOf(typeName.value || apis.v
299299
const primaryKey = computed(() => getPrimaryKey(typeOf(typeName.value || apis.value.AnyQuery?.dataModel.name)))
300300
301301
const take = computed(() => apiPrefs.value.take ?? defaultTake)
302-
const results = computed<any[]>(() => api.value.response ? mapGet(api.value.response, 'results') : null ?? [])
302+
const results = computed<any[]>(() => (api.value.response ? mapGet(api.value.response, 'results') : null) ?? [])
303303
const total = computed<number>(() => (api.value.response?.total || results.value.length) ?? 0)
304304
305305
const canFirst = computed(() => skip.value > 0)

src/components/Autocomplete.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ function hasOption(option:any) {
8282
const useLabel = computed(() => props.label ?? humanize(toPascalCase(props.id)))
8383
8484
let ctx: ApiState|undefined = inject('ApiState', undefined)
85-
const errorField = computed(() => errorResponse.call({ responseStatus: props.status ?? ctx?.error.value }, props.id))
85+
const errorField = computed(() => errorResponse.call({ responseStatus: props.status ?? (ctx as any)?.error.value }, props.id))
8686
8787
const cls = computed(() => [input.base, errorField.value ? input.invalid : input.valid])
8888

src/components/CheckboxInput.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ const emit = defineEmits<CheckboxInputEmits>()
3838
const useLabel = computed(() => props.label ?? humanize(toPascalCase(props.id)))
3939
4040
let ctx: ApiState|undefined = inject('ApiState', undefined)
41-
const errorField = computed(() => errorResponse.call({ responseStatus: props.status ?? ctx?.error.value }, props.id))
41+
const errorField = computed(() => errorResponse.call({ responseStatus: props.status ?? (ctx as any)?.error.value }, props.id))
4242
4343
const cls = computed(() => filterClass(['focus:ring-indigo-500 h-4 w-4 text-indigo-600 rounded border-gray-300 dark:border-gray-600 dark:bg-gray-800',props.inputClass], 'CheckboxInput', props.filterClass))
4444
</script>

src/components/DataGrid.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ import type { Breakpoint, FormatInfo, MetadataPropertyType } from '@/types'
4545
import type { DataGridProps, DataGridEmits } from '@/components/types'
4646
4747
import { form, grid } from './css'
48-
import { computed, ref, useSlots, type StyleValue } from 'vue'
48+
import { computed, ref, useSlots, type Slots, type StyleValue } from 'vue'
4949
import { humanify, map, uniqueKeys, mapGet } from '@servicestack/client'
5050
import { useMetadata } from '@/use/metadata'
5151
import { getTypeName } from '@/use/utils'
@@ -62,7 +62,7 @@ const refResults = ref<HTMLDivElement|null>()
6262
const showFilters = ref<string|null>(null)
6363
const isOpen = (column:string) => showFilters.value === column
6464
65-
const slots = useSlots()
65+
const slots:Slots = useSlots()
6666
const slotHeader = (column:string) => Object.keys(slots).find(x => x.toLowerCase() == column.toLowerCase()+'-header')
6767
const slotColumn = (column:string) => Object.keys(slots).find(x => x.toLowerCase() == column.toLowerCase())
6868
const columnSlots = computed(() => uniqueKeys(props.items).filter(k => !!(slots[k] || slots[k+'-header'])))

src/components/ErrorSummary.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { computed, inject } from "vue"
2121
const props = defineProps<ErrorSummaryProps>()
2222
2323
let ctx: ApiState|undefined = inject('ApiState', undefined)
24-
const errorSummary = computed(() => props.status || ctx?.error.value
25-
? errorResponseExcept.call({ responseStatus: props.status ?? ctx?.error.value }, props.except ?? [])
24+
const errorSummary = computed(() => props.status || (ctx as any)?.error.value
25+
? errorResponseExcept.call({ responseStatus: props.status ?? (ctx as any)?.error.value }, props.except ?? [])
2626
: null)
2727
</script>

src/components/FileInput.vue

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,13 @@ const useLabel = computed(() => props.label ?? humanize(toPascalCase(props.id)))
9191
const usePlaceholder = computed(() => props.placeholder ?? useLabel.value)
9292
9393
let ctx: ApiState|undefined = inject('ApiState', undefined)
94-
const errorField = computed(() => errorResponse.call({ responseStatus: props.status ?? ctx?.error.value }, props.id))
94+
const errorField = computed(() => errorResponse.call({ responseStatus: props.status ?? (ctx as any)?.error.value }, props.id))
9595
96-
const cls = computed(() => filterClass(['block w-full sm:text-sm rounded-md dark:text-white dark:bg-gray-900 file:mr-4 file:py-2 file:px-4 file:rounded-full file:border-0 file:text-sm file:font-semibold file:bg-violet-50 dark:file:bg-violet-900 file:text-violet-700 dark:file:text-violet-200 hover:file:bg-violet-100 dark:hover:file:bg-violet-800', errorField.value
97-
? 'pr-10 border-red-300 text-red-900 placeholder-red-300 focus:outline-none focus:ring-red-500 focus:border-red-500'
98-
: 'text-slate-500 dark:text-slate-400'
99-
, props.inputClass], 'FileInput', props.filterClass))
96+
const cls = computed(() => filterClass(['block w-full sm:text-sm rounded-md dark:text-white dark:bg-gray-900 file:mr-4 file:py-2 file:px-4 file:rounded-full file:border-0 file:text-sm file:font-semibold file:bg-violet-50 dark:file:bg-violet-900 file:text-violet-700 dark:file:text-violet-200 hover:file:bg-violet-100 dark:hover:file:bg-violet-800',
97+
errorField.value
98+
? 'pr-10 border-red-300 text-red-900 placeholder-red-300 focus:outline-none focus:ring-red-500 focus:border-red-500'
99+
: 'text-slate-500 dark:text-slate-400'
100+
, props.inputClass], 'FileInput', props.filterClass))
100101
101102
const onChange = (e:Event) => {
102103
let f = e.target as HTMLInputElement
@@ -116,7 +117,7 @@ const isDataUri = (src?:string|null) => src == null ? false : src.startsWith("da
116117
const src = computed(() => {
117118
118119
if (fileList.value.length > 0)
119-
return fileList.value[0].filePath
120+
return (fileList.value[0] as UploadedFile).filePath
120121
let filePath = typeof props.modelValue == 'string' ? props.modelValue : props.values && props.values[0]
121122
return filePath && filePathUri(assetsPathResolver(filePath)) || null
122123
})

src/components/MarkdownInput.vue

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,17 +88,18 @@ let history:Item[] = []
8888
let redos:Item[] = []
8989
9090
let ctx: ApiState|undefined = inject('ApiState', undefined)
91-
const errorField = computed(() => errorResponse.call({ responseStatus: props.status ?? ctx?.error.value }, props.id))
91+
const errorField = computed(() => errorResponse.call({ responseStatus: props.status ?? (ctx as any)?.error.value }, props.id))
9292
const useLabel = computed(() => props.label ?? humanize(toPascalCase(props.id)))
9393
9494
const allShow = 'bold,italics,link,image,blockquote,code,heading,orderedList,unorderedList,strikethrough,undo,redo,help'.split(',') as MarkdownInputOptions[]
9595
const showOptions = computed<{[k:string]:boolean}>(() => props.hide ? asOptions(allShow,props.hide) : asOptions(allShow,[]))
9696
function show(target:MarkdownInputOptions) { return showOptions.value[target] }
9797
9898
99-
const cls = computed(() => filterClass(['shadow-sm font-mono' + input.base.replace('rounded-md',''), errorField.value
100-
? 'text-red-900 focus:ring-red-500 focus:border-red-500 border-red-300'
101-
: 'text-gray-900 ' + input.valid, props.inputClass], 'MarkdownInput', props.filterClass))
99+
const cls = computed(() => filterClass(['shadow-sm font-mono' + input.base.replace('rounded-md',''),
100+
errorField.value
101+
? 'text-red-900 focus:ring-red-500 focus:border-red-500 border-red-300'
102+
: 'text-gray-900 ' + input.valid, props.inputClass], 'MarkdownInput', props.filterClass))
102103
const btnCls = "w-5 h-5 cursor-pointer select-none text-gray-700 dark:text-gray-300 hover:text-indigo-600 dark:hover:text-indigo-400"
103104
104105
const txt = ref()

src/components/ModalDialog.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<div class="flex min-h-full items-end justify-center p-4 text-center sm:items-center sm:p-0">
99
<div :class="[modalClass, sizeClass, transition2]" @mousedown.stop="">
1010
<div>
11-
<slot v-if="slots.closebutton" name="createform"></slot>
11+
<slot v-if="(slots as any).closebutton" name="createform"></slot>
1212
<div v-else class="hidden sm:block absolute top-0 right-0 pt-4 pr-4 z-10">
1313
<button type="button" @click="close":class="closeButtonClass" title="Close">
1414
<span class="sr-only">Close</span>

0 commit comments

Comments
 (0)