nuxt-feathers-zod 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +283 -0
- package/dist/module.d.mts +17 -0
- package/dist/module.json +12 -0
- package/dist/module.mjs +124 -0
- package/dist/runtime/adapters/ofetch.d.ts +5 -0
- package/dist/runtime/adapters/ofetch.js +18 -0
- package/dist/runtime/composables/feathers.d.ts +5 -0
- package/dist/runtime/composables/feathers.js +9 -0
- package/dist/runtime/composables/pinia.d.ts +1 -0
- package/dist/runtime/composables/pinia.js +11 -0
- package/dist/runtime/errors.d.ts +3 -0
- package/dist/runtime/errors.js +5 -0
- package/dist/runtime/options/authentication/client.d.ts +13 -0
- package/dist/runtime/options/authentication/client.js +12 -0
- package/dist/runtime/options/authentication/index.d.ts +42 -0
- package/dist/runtime/options/authentication/index.js +71 -0
- package/dist/runtime/options/authentication/jwt-types.d.ts +29 -0
- package/dist/runtime/options/authentication/jwt-types.js +0 -0
- package/dist/runtime/options/authentication/jwt.d.ts +7 -0
- package/dist/runtime/options/authentication/jwt.js +19 -0
- package/dist/runtime/options/authentication/local.d.ts +8 -0
- package/dist/runtime/options/authentication/local.js +8 -0
- package/dist/runtime/options/client/index.d.ts +14 -0
- package/dist/runtime/options/client/index.js +33 -0
- package/dist/runtime/options/client/pinia.d.ts +14 -0
- package/dist/runtime/options/client/pinia.js +22 -0
- package/dist/runtime/options/database/index.d.ts +6 -0
- package/dist/runtime/options/database/index.js +8 -0
- package/dist/runtime/options/database/mongodb.d.ts +12 -0
- package/dist/runtime/options/database/mongodb.js +3 -0
- package/dist/runtime/options/index.d.ts +44 -0
- package/dist/runtime/options/index.js +63 -0
- package/dist/runtime/options/plugins.d.ts +20 -0
- package/dist/runtime/options/plugins.js +69 -0
- package/dist/runtime/options/server.d.ts +7 -0
- package/dist/runtime/options/server.js +11 -0
- package/dist/runtime/options/services.d.ts +6 -0
- package/dist/runtime/options/services.js +13 -0
- package/dist/runtime/options/transports/index.d.ts +23 -0
- package/dist/runtime/options/transports/index.js +14 -0
- package/dist/runtime/options/transports/rest.d.ts +9 -0
- package/dist/runtime/options/transports/rest.js +22 -0
- package/dist/runtime/options/transports/utils.d.ts +1 -0
- package/dist/runtime/options/transports/utils.js +7 -0
- package/dist/runtime/options/transports/websocket.d.ts +8 -0
- package/dist/runtime/options/transports/websocket.js +17 -0
- package/dist/runtime/options/utils.d.ts +11 -0
- package/dist/runtime/options/utils.js +22 -0
- package/dist/runtime/options/validator.d.ts +13 -0
- package/dist/runtime/options/validator.js +29 -0
- package/dist/runtime/plugins/feathers-auth.d.ts +11 -0
- package/dist/runtime/plugins/feathers-auth.js +13 -0
- package/dist/runtime/server/tsconfig.json +3 -0
- package/dist/runtime/services.d.ts +4 -0
- package/dist/runtime/services.js +14 -0
- package/dist/runtime/stores/auth.d.ts +28 -0
- package/dist/runtime/stores/auth.js +47 -0
- package/dist/runtime/templates/client/authentication.d.ts +2 -0
- package/dist/runtime/templates/client/authentication.js +28 -0
- package/dist/runtime/templates/client/client.d.ts +2 -0
- package/dist/runtime/templates/client/client.js +50 -0
- package/dist/runtime/templates/client/connection.d.ts +3 -0
- package/dist/runtime/templates/client/connection.js +39 -0
- package/dist/runtime/templates/client/index.d.ts +4 -0
- package/dist/runtime/templates/client/index.js +33 -0
- package/dist/runtime/templates/client/plugin.d.ts +2 -0
- package/dist/runtime/templates/client/plugin.js +81 -0
- package/dist/runtime/templates/server/authentication.d.ts +2 -0
- package/dist/runtime/templates/server/authentication.js +32 -0
- package/dist/runtime/templates/server/index.d.ts +3 -0
- package/dist/runtime/templates/server/index.js +33 -0
- package/dist/runtime/templates/server/mongodb.d.ts +2 -0
- package/dist/runtime/templates/server/mongodb.js +26 -0
- package/dist/runtime/templates/server/plugin.d.ts +2 -0
- package/dist/runtime/templates/server/plugin.js +110 -0
- package/dist/runtime/templates/server/server.d.ts +2 -0
- package/dist/runtime/templates/server/server.js +61 -0
- package/dist/runtime/templates/server/validators.d.ts +2 -0
- package/dist/runtime/templates/server/validators.js +30 -0
- package/dist/runtime/templates/types.d.ts +6 -0
- package/dist/runtime/templates/types.js +0 -0
- package/dist/runtime/templates/utils.d.ts +4 -0
- package/dist/runtime/templates/utils.js +6 -0
- package/dist/runtime/zod/format.d.ts +10 -0
- package/dist/runtime/zod/format.js +7 -0
- package/dist/runtime/zod/index.d.ts +4 -0
- package/dist/runtime/zod/index.js +4 -0
- package/dist/runtime/zod/objectId.d.ts +9 -0
- package/dist/runtime/zod/objectId.js +17 -0
- package/dist/runtime/zod/query.d.ts +43 -0
- package/dist/runtime/zod/query.js +75 -0
- package/dist/runtime/zod/validators.d.ts +17 -0
- package/dist/runtime/zod/validators.js +46 -0
- package/dist/types.d.mts +7 -0
- package/package.json +111 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { put } from "../utils.js";
|
|
2
|
+
export function getServerValidatorContents(options) {
|
|
3
|
+
return () => {
|
|
4
|
+
const formats = options?.validator?.formats;
|
|
5
|
+
const mongo = !!options?.database?.mongo;
|
|
6
|
+
return `// ! Generated by nuxt-feathers-zod - do not change manually
|
|
7
|
+
// For more information about this file see https://dove.feathersjs.com/guides/cli/validators.html
|
|
8
|
+
|
|
9
|
+
${put(mongo, `import { keywordObjectId } from '@feathersjs/mongodb'`)}
|
|
10
|
+
import type { FormatsPluginOptions } from '@feathersjs/schema'
|
|
11
|
+
import { addFormats, Ajv } from '@feathersjs/schema'
|
|
12
|
+
|
|
13
|
+
const formats: FormatsPluginOptions = [
|
|
14
|
+
'${formats?.join(`',
|
|
15
|
+
'`)}'
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
export const dataValidator: Ajv = addFormats(new Ajv({}), formats)
|
|
19
|
+
|
|
20
|
+
export const queryValidator: Ajv = addFormats(
|
|
21
|
+
new Ajv({
|
|
22
|
+
coerceTypes: true,
|
|
23
|
+
}),
|
|
24
|
+
formats,
|
|
25
|
+
)
|
|
26
|
+
${put(mongo, `
|
|
27
|
+
dataValidator.addKeyword(keywordObjectId)
|
|
28
|
+
queryValidator.addKeyword(keywordObjectId)`)}`;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { NuxtTemplate } from 'nuxt/schema';
|
|
2
|
+
import type { ModuleConfig } from '../options/index.js';
|
|
3
|
+
export type GetContentsType = Required<NuxtTemplate<ModuleConfig>>['getContents'];
|
|
4
|
+
export type GetContentsDataType = Parameters<GetContentsType>[0];
|
|
5
|
+
export type Template = Required<Pick<NuxtTemplate, 'filename' | 'getContents' | 'write'>>;
|
|
6
|
+
export type Templates = Array<Template>;
|
|
File without changes
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ZodError } from 'zod';
|
|
2
|
+
export interface ZodIssueItem {
|
|
3
|
+
path: string;
|
|
4
|
+
code: string;
|
|
5
|
+
message: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Formats Zod issues into a stable, UI-friendly structure.
|
|
9
|
+
*/
|
|
10
|
+
export declare function formatZodIssues(err: ZodError): ZodIssueItem[];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ObjectId } from 'mongodb';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
/**
|
|
4
|
+
* MongoDB ObjectId schema that accepts:
|
|
5
|
+
* - ObjectId instances
|
|
6
|
+
* - 24-hex strings (converted to ObjectId)
|
|
7
|
+
* - undefined (optional)
|
|
8
|
+
*/
|
|
9
|
+
export declare function objectIdSchema(): z.ZodUnion<[z.ZodOptional<z.ZodType<ObjectId, z.ZodTypeDef, ObjectId>>, z.ZodEffects<z.ZodString, ObjectId, string>]>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ObjectId } from "mongodb";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
export function objectIdSchema() {
|
|
4
|
+
return z.instanceof(ObjectId).optional().or(
|
|
5
|
+
z.string().transform((input, ctx) => {
|
|
6
|
+
try {
|
|
7
|
+
return ObjectId.createFromHexString(input);
|
|
8
|
+
} catch (err) {
|
|
9
|
+
ctx.addIssue({
|
|
10
|
+
code: z.ZodIssueCode.custom,
|
|
11
|
+
message: err?.message ?? "Invalid ObjectId"
|
|
12
|
+
});
|
|
13
|
+
return z.NEVER;
|
|
14
|
+
}
|
|
15
|
+
})
|
|
16
|
+
);
|
|
17
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { z, type ZodRawShape, type ZodTypeAny } from 'zod';
|
|
2
|
+
type KeysOf<Shape extends ZodRawShape> = Extract<keyof Shape, string>;
|
|
3
|
+
export declare function sortDefinition<Shape extends ZodRawShape>(shape: Shape): z.ZodObject<Record<string, z.ZodTypeAny>, "strict", z.ZodTypeAny, {
|
|
4
|
+
[x: string]: any;
|
|
5
|
+
}, {
|
|
6
|
+
[x: string]: any;
|
|
7
|
+
}>;
|
|
8
|
+
export declare function queryProperty<T extends ZodTypeAny, X extends Record<string, ZodTypeAny> = {}>(prop: T, extension?: X): z.ZodUnion<[z.ZodOptional<z.ZodNullable<T>>, z.ZodObject<{
|
|
9
|
+
$ne: z.ZodOptional<z.ZodOptional<z.ZodNullable<T>>>;
|
|
10
|
+
$gt: z.ZodOptional<z.ZodOptional<T>>;
|
|
11
|
+
$gte: z.ZodOptional<z.ZodOptional<T>>;
|
|
12
|
+
$lt: z.ZodOptional<z.ZodOptional<T>>;
|
|
13
|
+
$lte: z.ZodOptional<z.ZodOptional<T>>;
|
|
14
|
+
$in: z.ZodOptional<z.ZodArray<z.ZodOptional<z.ZodNullable<T>>, "many">>;
|
|
15
|
+
$nin: z.ZodOptional<z.ZodArray<z.ZodOptional<z.ZodNullable<T>>, "many">>;
|
|
16
|
+
} & X, "strict", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
|
|
17
|
+
$ne: z.ZodOptional<z.ZodOptional<z.ZodNullable<T>>>;
|
|
18
|
+
$gt: z.ZodOptional<z.ZodOptional<T>>;
|
|
19
|
+
$gte: z.ZodOptional<z.ZodOptional<T>>;
|
|
20
|
+
$lt: z.ZodOptional<z.ZodOptional<T>>;
|
|
21
|
+
$lte: z.ZodOptional<z.ZodOptional<T>>;
|
|
22
|
+
$in: z.ZodOptional<z.ZodArray<z.ZodOptional<z.ZodNullable<T>>, "many">>;
|
|
23
|
+
$nin: z.ZodOptional<z.ZodArray<z.ZodOptional<z.ZodNullable<T>>, "many">>;
|
|
24
|
+
} & X>, any> extends infer T_1 ? { [k in keyof T_1]: T_1[k]; } : never, z.baseObjectInputType<{
|
|
25
|
+
$ne: z.ZodOptional<z.ZodOptional<z.ZodNullable<T>>>;
|
|
26
|
+
$gt: z.ZodOptional<z.ZodOptional<T>>;
|
|
27
|
+
$gte: z.ZodOptional<z.ZodOptional<T>>;
|
|
28
|
+
$lt: z.ZodOptional<z.ZodOptional<T>>;
|
|
29
|
+
$lte: z.ZodOptional<z.ZodOptional<T>>;
|
|
30
|
+
$in: z.ZodOptional<z.ZodArray<z.ZodOptional<z.ZodNullable<T>>, "many">>;
|
|
31
|
+
$nin: z.ZodOptional<z.ZodArray<z.ZodOptional<z.ZodNullable<T>>, "many">>;
|
|
32
|
+
} & X> extends infer T_2 ? { [k_1 in keyof T_2]: T_2[k_1]; } : never>]>;
|
|
33
|
+
export declare function queryPropertiesShape<Shape extends ZodRawShape, X extends Partial<Record<KeysOf<Shape>, Record<string, ZodTypeAny>>> = {}>(shape: Shape, extensions?: X): Record<Extract<keyof Shape, string>, z.ZodTypeAny>;
|
|
34
|
+
/**
|
|
35
|
+
* Zod equivalent of @feathersjs/typebox querySyntax():
|
|
36
|
+
* - $select, $sort, $limit, $skip
|
|
37
|
+
* - field filters with operator objects ($gt/$in/...)
|
|
38
|
+
* - $and / $or (recursive)
|
|
39
|
+
*
|
|
40
|
+
* Extensions allow adding per-field custom operators (e.g. $regex for strings).
|
|
41
|
+
*/
|
|
42
|
+
export declare function zodQuerySyntax<Schema extends z.AnyZodObject, Shape extends Schema['shape'], X extends Partial<Record<KeysOf<Shape>, Record<string, ZodTypeAny>>> = {}>(schema: Schema, extensions?: X): z.ZodTypeAny;
|
|
43
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const order = z.union([z.literal(1), z.literal(-1)]);
|
|
3
|
+
function coerceNumber() {
|
|
4
|
+
return z.preprocess((v) => {
|
|
5
|
+
if (typeof v === "string" && v.trim() !== "")
|
|
6
|
+
return Number(v);
|
|
7
|
+
return v;
|
|
8
|
+
}, z.number());
|
|
9
|
+
}
|
|
10
|
+
function coerceStringArrayFromCsv() {
|
|
11
|
+
return z.preprocess((v) => {
|
|
12
|
+
if (typeof v === "string") {
|
|
13
|
+
return v.split(",").map((s) => s.trim()).filter(Boolean);
|
|
14
|
+
}
|
|
15
|
+
return v;
|
|
16
|
+
}, z.array(z.string()));
|
|
17
|
+
}
|
|
18
|
+
export function sortDefinition(shape) {
|
|
19
|
+
const properties = Object.keys(shape).reduce((acc, key) => {
|
|
20
|
+
;
|
|
21
|
+
acc[key] = order.optional();
|
|
22
|
+
return acc;
|
|
23
|
+
}, {});
|
|
24
|
+
return z.object(properties).strict();
|
|
25
|
+
}
|
|
26
|
+
function arrayOfKeys(shape) {
|
|
27
|
+
const keys = Object.keys(shape);
|
|
28
|
+
return z.enum(keys).array();
|
|
29
|
+
}
|
|
30
|
+
export function queryProperty(prop, extension = {}) {
|
|
31
|
+
const nullishProp = prop.nullish();
|
|
32
|
+
const propOptional = prop.optional();
|
|
33
|
+
return z.union([
|
|
34
|
+
// Direct equality (supports null/undefined if the base schema allows it)
|
|
35
|
+
nullishProp,
|
|
36
|
+
// Operator object
|
|
37
|
+
z.object({
|
|
38
|
+
$ne: nullishProp.optional(),
|
|
39
|
+
$gt: propOptional.optional(),
|
|
40
|
+
$gte: propOptional.optional(),
|
|
41
|
+
$lt: propOptional.optional(),
|
|
42
|
+
$lte: propOptional.optional(),
|
|
43
|
+
$in: z.array(nullishProp).optional(),
|
|
44
|
+
$nin: z.array(nullishProp).optional(),
|
|
45
|
+
...extension
|
|
46
|
+
}).strict()
|
|
47
|
+
]);
|
|
48
|
+
}
|
|
49
|
+
export function queryPropertiesShape(shape, extensions = {}) {
|
|
50
|
+
const keys = Object.keys(shape);
|
|
51
|
+
return keys.reduce((acc, key) => {
|
|
52
|
+
;
|
|
53
|
+
acc[key] = queryProperty(shape[key], extensions[key]).optional();
|
|
54
|
+
return acc;
|
|
55
|
+
}, {});
|
|
56
|
+
}
|
|
57
|
+
export function zodQuerySyntax(schema, extensions = {}) {
|
|
58
|
+
const shape = schema.shape;
|
|
59
|
+
const keys = Object.keys(shape);
|
|
60
|
+
const properties = queryPropertiesShape(shape, extensions);
|
|
61
|
+
const baseQuery = z.object({
|
|
62
|
+
$select: z.union([arrayOfKeys(shape), coerceStringArrayFromCsv().pipe(z.array(z.enum(keys)))]).optional(),
|
|
63
|
+
$sort: sortDefinition(shape).optional(),
|
|
64
|
+
$limit: coerceNumber().pipe(z.number().min(-1)).optional(),
|
|
65
|
+
$skip: coerceNumber().pipe(z.number().min(0)).optional(),
|
|
66
|
+
...properties
|
|
67
|
+
}).strict();
|
|
68
|
+
const query = z.lazy(
|
|
69
|
+
() => baseQuery.extend({
|
|
70
|
+
$or: z.array(query).optional(),
|
|
71
|
+
$and: z.array(query).optional()
|
|
72
|
+
}).strict()
|
|
73
|
+
);
|
|
74
|
+
return query;
|
|
75
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Validator } from '@feathersjs/schema';
|
|
2
|
+
import type { ZodTypeAny } from 'zod';
|
|
3
|
+
export type ValidatorKind = 'data' | 'query';
|
|
4
|
+
export interface ZodValidatorOptions {
|
|
5
|
+
kind?: ValidatorKind;
|
|
6
|
+
message?: string;
|
|
7
|
+
useSafeParse?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Feathers Schema-compatible validator based on Zod.
|
|
11
|
+
*
|
|
12
|
+
* Notes:
|
|
13
|
+
* - Accepts the extra 3rd argument (ResolverStatus) expected by @feathersjs/schema types.
|
|
14
|
+
* - Marks the validated object with VALIDATED (adapter-commons) to avoid re-validating in adapters.
|
|
15
|
+
* - Supports array data payloads (createMany).
|
|
16
|
+
*/
|
|
17
|
+
export declare function getZodValidator<T extends ZodTypeAny>(schema: T, opts?: ZodValidatorOptions): Validator;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { VALIDATED } from "@feathersjs/adapter-commons";
|
|
2
|
+
import { BadRequest } from "@feathersjs/errors";
|
|
3
|
+
import { ZodError } from "zod";
|
|
4
|
+
import { formatZodIssues } from "./format.js";
|
|
5
|
+
export function getZodValidator(schema, opts = {}) {
|
|
6
|
+
const kind = opts.kind ?? "data";
|
|
7
|
+
const message = opts.message ?? (kind === "query" ? "Invalid query" : "Invalid data");
|
|
8
|
+
const useSafeParse = opts.useSafeParse ?? true;
|
|
9
|
+
const validator = (async (value, context, _status) => {
|
|
10
|
+
try {
|
|
11
|
+
const parseOne = async (v) => {
|
|
12
|
+
if (useSafeParse) {
|
|
13
|
+
const res = schema.safeParse(v);
|
|
14
|
+
if (!res.success) {
|
|
15
|
+
throw new BadRequest(message, {
|
|
16
|
+
errors: formatZodIssues(res.error),
|
|
17
|
+
issues: res.error.issues,
|
|
18
|
+
kind,
|
|
19
|
+
path: context?.path,
|
|
20
|
+
method: context?.method
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
return res.data;
|
|
24
|
+
}
|
|
25
|
+
return schema.parse(v);
|
|
26
|
+
};
|
|
27
|
+
const parsed = kind === "data" && Array.isArray(value) ? await Promise.all(value.map(parseOne)) : await parseOne(value);
|
|
28
|
+
Object.defineProperty(parsed, VALIDATED, { value: true });
|
|
29
|
+
return parsed;
|
|
30
|
+
} catch (err) {
|
|
31
|
+
if (err instanceof BadRequest)
|
|
32
|
+
throw err;
|
|
33
|
+
if (err instanceof ZodError) {
|
|
34
|
+
throw new BadRequest(message, {
|
|
35
|
+
errors: formatZodIssues(err),
|
|
36
|
+
issues: err.issues,
|
|
37
|
+
kind,
|
|
38
|
+
path: context?.path,
|
|
39
|
+
method: context?.method
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
throw err;
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
return validator;
|
|
46
|
+
}
|
package/dist/types.d.mts
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "nuxt-feathers-zod",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"packageManager": "bun@1.3.6",
|
|
6
|
+
"description": "Feathers API integration for Nuxt",
|
|
7
|
+
"author": "Herve de CHAVIGNY",
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "github",
|
|
11
|
+
"url": "git+ssh://git@github.com/vevedh/nuxt-feathers-zod.git"
|
|
12
|
+
},
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"types": "./dist/types.d.mts",
|
|
16
|
+
"import": "./dist/module.mjs"
|
|
17
|
+
},
|
|
18
|
+
"./options": "./dist/runtime/options/index.js",
|
|
19
|
+
"./ofetch-adapter": "./dist/runtime/adapters/ofetch.js",
|
|
20
|
+
"./validators": "./dist/runtime/zod/validators.js",
|
|
21
|
+
"./query": "./dist/runtime/zod/query.js",
|
|
22
|
+
"./format": "./dist/runtime/zod/format.js"
|
|
23
|
+
},
|
|
24
|
+
"main": "./dist/module.mjs",
|
|
25
|
+
"typesVersions": {
|
|
26
|
+
"*": {
|
|
27
|
+
".": ["./dist/types.d.mts"],
|
|
28
|
+
"options": ["./dist/runtime/options/index.d.mts"],
|
|
29
|
+
"ofetch-adapter": ["./dist/runtime/adapters/ofetch.d.mts"]
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"files": ["dist"],
|
|
33
|
+
"scripts": {
|
|
34
|
+
"prepack": "nuxt-module-build build",
|
|
35
|
+
"dev": "nuxi dev playground",
|
|
36
|
+
"build": "nuxi build playground",
|
|
37
|
+
"prepare": "nuxt-module-build prepare && nuxt-module-build build",
|
|
38
|
+
"lint": "eslint . && nr -r lint",
|
|
39
|
+
"lint:fix": "eslint . --fix && nr -r lint:fix",
|
|
40
|
+
"publish:npm": "bun run prepack && bun publish --access public",
|
|
41
|
+
"release": "bunx release-it",
|
|
42
|
+
"release:patch": "bunx release-it patch",
|
|
43
|
+
"release:minor": "bunx release-it minor",
|
|
44
|
+
"release:major": "bunx release-it major"
|
|
45
|
+
},
|
|
46
|
+
"peerDependencies": {
|
|
47
|
+
"nuxt": "^4.0.0"
|
|
48
|
+
},
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"@feathersjs/adapter-commons": "latest",
|
|
51
|
+
"@feathersjs/authentication": "latest",
|
|
52
|
+
"@feathersjs/authentication-client": "latest",
|
|
53
|
+
"@feathersjs/authentication-local": "latest",
|
|
54
|
+
"@feathersjs/configuration": "latest",
|
|
55
|
+
"@feathersjs/errors": "^5.0.37",
|
|
56
|
+
"@feathersjs/feathers": "latest",
|
|
57
|
+
"@feathersjs/generators": "latest",
|
|
58
|
+
"@feathersjs/koa": "^5.0.37",
|
|
59
|
+
"@feathersjs/memory": "latest",
|
|
60
|
+
"@feathersjs/mongodb": "latest",
|
|
61
|
+
"@feathersjs/rest-client": "latest",
|
|
62
|
+
"@feathersjs/schema": "^5.0.37",
|
|
63
|
+
"@feathersjs/socketio-client": "latest",
|
|
64
|
+
"@gabortorma/feathers-nitro-adapter": "latest",
|
|
65
|
+
"@nuxt/kit": "latest",
|
|
66
|
+
"@pinia/nuxt": "latest",
|
|
67
|
+
"ajv-formats": "^3.0.1",
|
|
68
|
+
"change-case": "latest",
|
|
69
|
+
"consola": "latest",
|
|
70
|
+
"defu": "latest",
|
|
71
|
+
"feathers-pinia": "latest",
|
|
72
|
+
"mongodb": "^6.21.0",
|
|
73
|
+
"pinia": "latest",
|
|
74
|
+
"socket.io-client": "latest",
|
|
75
|
+
"unimport": "^3.14.6",
|
|
76
|
+
"zod": "^3.25.76"
|
|
77
|
+
},
|
|
78
|
+
"devDependencies": {
|
|
79
|
+
"@antfu/ni": "latest",
|
|
80
|
+
"@gabortorma/antfu-eslint-config": "^1.7.4",
|
|
81
|
+
"@gabortorma/mwm": "latest",
|
|
82
|
+
"@gabortorma/nuxt-eslint-layer": "latest",
|
|
83
|
+
"@nuxt/devtools": "latest",
|
|
84
|
+
"@nuxt/module-builder": "latest",
|
|
85
|
+
"@nuxt/schema": "latest",
|
|
86
|
+
"@nuxt/test-utils": "latest",
|
|
87
|
+
"@playwright/test": "latest",
|
|
88
|
+
"@types/node": "latest",
|
|
89
|
+
"dotenv-cli": "latest",
|
|
90
|
+
"eslint": "^9.39.2",
|
|
91
|
+
"nuxt": "^4.3.0",
|
|
92
|
+
"nuxt-mcp": "latest",
|
|
93
|
+
"release-it": "latest",
|
|
94
|
+
"typescript": "latest",
|
|
95
|
+
"vitest": "latest",
|
|
96
|
+
"vitest-mongodb": "latest",
|
|
97
|
+
"vue": "latest",
|
|
98
|
+
"vue-router": "latest"
|
|
99
|
+
},
|
|
100
|
+
"overrides": {
|
|
101
|
+
"@feathersjs/authentication": "5.0.37",
|
|
102
|
+
"@feathersjs/authentication-client": "5.0.37",
|
|
103
|
+
"@feathersjs/authentication-local": "5.0.37",
|
|
104
|
+
"@feathersjs/errors": "5.0.37",
|
|
105
|
+
"@feathersjs/feathers": "5.0.37",
|
|
106
|
+
"@feathersjs/koa": "5.0.37",
|
|
107
|
+
"@feathersjs/rest-client": "5.0.37",
|
|
108
|
+
"@feathersjs/schema": "5.0.37",
|
|
109
|
+
"@feathersjs/socketio-client": "5.0.37"
|
|
110
|
+
}
|
|
111
|
+
}
|