nuxt-feathers-zod 6.4.41 → 6.4.45

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/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Changelog
2
2
 
3
- ## 6.4.37
3
+ ## 6.4.45
4
4
 
5
5
  - remote + Keycloak: SSO authentication now hydrates the local Feathers client auth store immediately
6
6
  - remote handshake can use the configured strategy (for example `sso`) while preserving a coherent local fallback state
@@ -239,4 +239,4 @@
239
239
  - public release metadata resynchronized to 6.4.35
240
240
  - devtools plume icon/theme-parent behavior preserved
241
241
 
242
- - 6.4.37: remote Keycloak Option B contract (`strategy: 'sso'`, `user: loginuser`, `authenticated: true`) is now first-class in the runtime and docs; generated route middleware no longer re-runs `auth.init()` or reuses callback hashes in redirect URIs.
242
+ - 6.4.45: remote Keycloak Option B contract (`strategy: 'sso'`, `user: loginuser`, `authenticated: true`) is now first-class in the runtime and docs; generated route middleware no longer re-runs `auth.init()` or reuses callback hashes in redirect URIs.
package/README.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # nuxt-feathers-zod
2
2
 
3
- > OSS reference snapshot: **v6.4.41** — optional Mongo management options aligned and release metadata synchronized.
3
+ > OSS reference snapshot: **v6.4.45** — optional Mongo management options aligned and release metadata synchronized.
4
4
 
5
5
  [Documentation](https://vevedh.github.io/nuxt-feathers-zod/)
6
6
 
7
7
  `nuxt-feathers-zod` is the official **Nuxt 4** module that embeds or connects to **FeathersJS v5 (Dove)** with a **CLI-first** workflow and optional **Zod-first** service generation.
8
8
 
9
- Current OSS release target: **6.4.41**.
9
+ Current OSS release target: **6.4.45**.
10
10
 
11
11
  It supports two main usage patterns:
12
12
 
@@ -132,7 +132,7 @@ bunx nuxt-feathers-zod middlewares list --target nitro
132
132
  bunx nuxt-feathers-zod middlewares add request-id --target nitro
133
133
  ```
134
134
 
135
- ## CLI command surface in 6.4.41
135
+ ## CLI command surface in 6.4.45
136
136
 
137
137
  | Area | Commands |
138
138
  |---|---|
@@ -2752,14 +2752,27 @@ Flags overview:
2752
2752
  --dry
2753
2753
 
2754
2754
  mongo management:
2755
- --url <mongodb-url> set/update MongoDB connection URL
2756
- --enabled true|false (default: true)
2757
- --auth true|false (default: true)
2758
- --basePath <path> (default: /mongo)
2759
- --exposeDatabasesService true|false (default: true)
2760
- --exposeCollectionsService true|false (default: true)
2761
- --exposeUsersService true|false (default: false)
2762
- --exposeCollectionCrud true|false (default: true)
2755
+ --url <mongodb-url> set/update feathers.database.mongo.url
2756
+ --enabled true|false management.enabled (default: true)
2757
+ --auth true|false management.auth (default: true)
2758
+ --basePath <path> management.basePath (default: /mongo)
2759
+ --exposeDatabasesService true|false management.exposeDatabasesService (default: true)
2760
+ --exposeCollectionsService true|false management.exposeCollectionsService (default: true)
2761
+ --exposeUsersService true|false management.exposeUsersService (default: false)
2762
+ --exposeCollectionCrud true|false management.exposeCollectionCrud (default: true)
2763
+ --whitelistDatabases <csv> management.whitelistDatabases
2764
+ --blacklistDatabases <csv> management.blacklistDatabases
2765
+ --whitelistCollections <csv> management.whitelistCollections
2766
+ --blacklistCollections <csv> management.blacklistCollections
2767
+ --showSystemDatabases true|false management.showSystemDatabases (default: false)
2768
+ --allowCreateDatabase true|false management.allowCreateDatabase (default: false)
2769
+ --allowDropDatabase true|false management.allowDropDatabase (default: false)
2770
+ --allowCreateCollection true|false management.allowCreateCollection (default: false)
2771
+ --allowDropCollection true|false management.allowDropCollection (default: false)
2772
+ --allowInsertDocuments true|false management.allowInsertDocuments (default: false)
2773
+ --allowPatchDocuments true|false management.allowPatchDocuments (default: false)
2774
+ --allowReplaceDocuments true|false management.allowReplaceDocuments (default: false)
2775
+ --allowRemoveDocuments true|false management.allowRemoveDocuments (default: false)
2763
2776
  --dry
2764
2777
 
2765
2778
  add middleware <name>:
@@ -3012,7 +3025,20 @@ function parseDatabaseMongoState(raw) {
3012
3025
  exposeDatabasesService: parseBooleanValue2(managementRaw?.match(/\bexposeDatabasesService\s*:\s*(true|false)/)?.[0]),
3013
3026
  exposeCollectionsService: parseBooleanValue2(managementRaw?.match(/\bexposeCollectionsService\s*:\s*(true|false)/)?.[0]),
3014
3027
  exposeUsersService: parseBooleanValue2(managementRaw?.match(/\bexposeUsersService\s*:\s*(true|false)/)?.[0]),
3015
- exposeCollectionCrud: parseBooleanValue2(managementRaw?.match(/\bexposeCollectionCrud\s*:\s*(true|false)/)?.[0])
3028
+ exposeCollectionCrud: parseBooleanValue2(managementRaw?.match(/\bexposeCollectionCrud\s*:\s*(true|false)/)?.[0]),
3029
+ whitelistDatabases: parseStringArray2(managementRaw?.match(/\bwhitelistDatabases\s*:\s*\[[^\]]*\]/)?.[0]),
3030
+ blacklistDatabases: parseStringArray2(managementRaw?.match(/\bblacklistDatabases\s*:\s*\[[^\]]*\]/)?.[0]),
3031
+ whitelistCollections: parseStringArray2(managementRaw?.match(/\bwhitelistCollections\s*:\s*\[[^\]]*\]/)?.[0]),
3032
+ blacklistCollections: parseStringArray2(managementRaw?.match(/\bblacklistCollections\s*:\s*\[[^\]]*\]/)?.[0]),
3033
+ showSystemDatabases: parseBooleanValue2(managementRaw?.match(/\bshowSystemDatabases\s*:\s*(true|false)/)?.[0]),
3034
+ allowCreateDatabase: parseBooleanValue2(managementRaw?.match(/\ballowCreateDatabase\s*:\s*(true|false)/)?.[0]),
3035
+ allowDropDatabase: parseBooleanValue2(managementRaw?.match(/\ballowDropDatabase\s*:\s*(true|false)/)?.[0]),
3036
+ allowCreateCollection: parseBooleanValue2(managementRaw?.match(/\ballowCreateCollection\s*:\s*(true|false)/)?.[0]),
3037
+ allowDropCollection: parseBooleanValue2(managementRaw?.match(/\ballowDropCollection\s*:\s*(true|false)/)?.[0]),
3038
+ allowInsertDocuments: parseBooleanValue2(managementRaw?.match(/\ballowInsertDocuments\s*:\s*(true|false)/)?.[0]),
3039
+ allowPatchDocuments: parseBooleanValue2(managementRaw?.match(/\ballowPatchDocuments\s*:\s*(true|false)/)?.[0]),
3040
+ allowReplaceDocuments: parseBooleanValue2(managementRaw?.match(/\ballowReplaceDocuments\s*:\s*(true|false)/)?.[0]),
3041
+ allowRemoveDocuments: parseBooleanValue2(managementRaw?.match(/\ballowRemoveDocuments\s*:\s*(true|false)/)?.[0])
3016
3042
  };
3017
3043
  }
3018
3044
  function ensureNuxtModuleInConfig(src2, moduleName) {
@@ -3147,6 +3173,32 @@ function patchFeathersObjectLiteral(feathersObj, patch) {
3147
3173
  managementParts.push(`exposeUsersService: ${mongoState.exposeUsersService}`);
3148
3174
  if (mongoState.exposeCollectionCrud !== undefined)
3149
3175
  managementParts.push(`exposeCollectionCrud: ${mongoState.exposeCollectionCrud}`);
3176
+ if (mongoState.whitelistDatabases?.length)
3177
+ managementParts.push(`whitelistDatabases: ${renderStringArray(mongoState.whitelistDatabases)}`);
3178
+ if (mongoState.blacklistDatabases?.length)
3179
+ managementParts.push(`blacklistDatabases: ${renderStringArray(mongoState.blacklistDatabases)}`);
3180
+ if (mongoState.whitelistCollections?.length)
3181
+ managementParts.push(`whitelistCollections: ${renderStringArray(mongoState.whitelistCollections)}`);
3182
+ if (mongoState.blacklistCollections?.length)
3183
+ managementParts.push(`blacklistCollections: ${renderStringArray(mongoState.blacklistCollections)}`);
3184
+ if (mongoState.showSystemDatabases !== undefined)
3185
+ managementParts.push(`showSystemDatabases: ${mongoState.showSystemDatabases}`);
3186
+ if (mongoState.allowCreateDatabase !== undefined)
3187
+ managementParts.push(`allowCreateDatabase: ${mongoState.allowCreateDatabase}`);
3188
+ if (mongoState.allowDropDatabase !== undefined)
3189
+ managementParts.push(`allowDropDatabase: ${mongoState.allowDropDatabase}`);
3190
+ if (mongoState.allowCreateCollection !== undefined)
3191
+ managementParts.push(`allowCreateCollection: ${mongoState.allowCreateCollection}`);
3192
+ if (mongoState.allowDropCollection !== undefined)
3193
+ managementParts.push(`allowDropCollection: ${mongoState.allowDropCollection}`);
3194
+ if (mongoState.allowInsertDocuments !== undefined)
3195
+ managementParts.push(`allowInsertDocuments: ${mongoState.allowInsertDocuments}`);
3196
+ if (mongoState.allowPatchDocuments !== undefined)
3197
+ managementParts.push(`allowPatchDocuments: ${mongoState.allowPatchDocuments}`);
3198
+ if (mongoState.allowReplaceDocuments !== undefined)
3199
+ managementParts.push(`allowReplaceDocuments: ${mongoState.allowReplaceDocuments}`);
3200
+ if (mongoState.allowRemoveDocuments !== undefined)
3201
+ managementParts.push(`allowRemoveDocuments: ${mongoState.allowRemoveDocuments}`);
3150
3202
  const mongoParts = [];
3151
3203
  if (mongoState.url)
3152
3204
  mongoParts.push(`url: '${mongoState.url}'`);
@@ -6442,6 +6494,20 @@ async function handleMongoManagementCommand(cwd, args) {
6442
6494
  const exposeCollectionsService = parseBooleanFlag(args.exposeCollectionsService, true);
6443
6495
  const exposeUsersService = parseBooleanFlag(args.exposeUsersService, false);
6444
6496
  const exposeCollectionCrud = parseBooleanFlag(args.exposeCollectionCrud, true);
6497
+ const showSystemDatabases = parseBooleanFlag(args.showSystemDatabases, false);
6498
+ const allowCreateDatabase = parseBooleanFlag(args.allowCreateDatabase, false);
6499
+ const allowDropDatabase = parseBooleanFlag(args.allowDropDatabase, false);
6500
+ const allowCreateCollection = parseBooleanFlag(args.allowCreateCollection, false);
6501
+ const allowDropCollection = parseBooleanFlag(args.allowDropCollection, false);
6502
+ const allowInsertDocuments = parseBooleanFlag(args.allowInsertDocuments, false);
6503
+ const allowPatchDocuments = parseBooleanFlag(args.allowPatchDocuments, false);
6504
+ const allowReplaceDocuments = parseBooleanFlag(args.allowReplaceDocuments, false);
6505
+ const allowRemoveDocuments = parseBooleanFlag(args.allowRemoveDocuments, false);
6506
+ const parseCsv = (value) => typeof value === "string" ? value.split(",").map((part) => part.trim()).filter(Boolean) : undefined;
6507
+ const whitelistDatabases = parseCsv(args.whitelistDatabases);
6508
+ const blacklistDatabases = parseCsv(args.blacklistDatabases);
6509
+ const whitelistCollections = parseCsv(args.whitelistCollections);
6510
+ const blacklistCollections = parseCsv(args.blacklistCollections);
6445
6511
  const basePath = normalizeMongoManagementBasePath(typeof args.basePath === "string" ? String(args.basePath) : "/mongo");
6446
6512
  const url = typeof args.url === "string" ? String(args.url).trim() : undefined;
6447
6513
  await tryPatchNuxtConfig(projectRoot, {
@@ -6453,7 +6519,20 @@ async function handleMongoManagementCommand(cwd, args) {
6453
6519
  exposeDatabasesService,
6454
6520
  exposeCollectionsService,
6455
6521
  exposeUsersService,
6456
- exposeCollectionCrud
6522
+ exposeCollectionCrud,
6523
+ whitelistDatabases,
6524
+ blacklistDatabases,
6525
+ whitelistCollections,
6526
+ blacklistCollections,
6527
+ showSystemDatabases,
6528
+ allowCreateDatabase,
6529
+ allowDropDatabase,
6530
+ allowCreateCollection,
6531
+ allowDropCollection,
6532
+ allowInsertDocuments,
6533
+ allowPatchDocuments,
6534
+ allowReplaceDocuments,
6535
+ allowRemoveDocuments
6457
6536
  }
6458
6537
  }, { dry });
6459
6538
  const routes = getMongoManagementRoutes({
@@ -6469,6 +6548,10 @@ async function handleMongoManagementCommand(cwd, args) {
6469
6548
  consola.box(`Mongo management ${enabled ? "enabled" : "disabled"}
6470
6549
  basePath: ${basePath}
6471
6550
  auth: ${auth}
6551
+ showSystemDatabases: ${showSystemDatabases}
6552
+ allowCreateCollection: ${allowCreateCollection}
6553
+ allowDropCollection: ${allowDropCollection}
6554
+ allowInsertDocuments: ${allowInsertDocuments}
6472
6555
  routes:
6473
6556
  ${routeList}`);
6474
6557
  }
@@ -6742,10 +6825,23 @@ function createCliCommand() {
6742
6825
  enabled: { type: "boolean", description: "Enable Mongo management surface" },
6743
6826
  auth: { type: "boolean", description: "Protect management routes with JWT auth" },
6744
6827
  basePath: { type: "string", description: "Mongo management base path" },
6745
- exposeDatabasesService: { type: "boolean", description: "Expose /databases route" },
6746
- exposeCollectionsService: { type: "boolean", description: "Expose /:db/collections route" },
6747
- exposeUsersService: { type: "boolean", description: "Expose /users route" },
6748
- exposeCollectionCrud: { type: "boolean", description: "Expose stats/indexes/count/schema/documents/aggregate routes" },
6828
+ exposeDatabasesService: { type: "boolean", description: "Set feathers.database.mongo.management.exposeDatabasesService" },
6829
+ exposeCollectionsService: { type: "boolean", description: "Set feathers.database.mongo.management.exposeCollectionsService" },
6830
+ exposeUsersService: { type: "boolean", description: "Set feathers.database.mongo.management.exposeUsersService" },
6831
+ exposeCollectionCrud: { type: "boolean", description: "Set feathers.database.mongo.management.exposeCollectionCrud" },
6832
+ whitelistDatabases: { type: "string", description: "Comma-separated feathers.database.mongo.management.whitelistDatabases" },
6833
+ blacklistDatabases: { type: "string", description: "Comma-separated feathers.database.mongo.management.blacklistDatabases" },
6834
+ whitelistCollections: { type: "string", description: "Comma-separated feathers.database.mongo.management.whitelistCollections" },
6835
+ blacklistCollections: { type: "string", description: "Comma-separated feathers.database.mongo.management.blacklistCollections" },
6836
+ showSystemDatabases: { type: "boolean", description: "Set feathers.database.mongo.management.showSystemDatabases" },
6837
+ allowCreateDatabase: { type: "boolean", description: "Set feathers.database.mongo.management.allowCreateDatabase" },
6838
+ allowDropDatabase: { type: "boolean", description: "Set feathers.database.mongo.management.allowDropDatabase" },
6839
+ allowCreateCollection: { type: "boolean", description: "Set feathers.database.mongo.management.allowCreateCollection" },
6840
+ allowDropCollection: { type: "boolean", description: "Set feathers.database.mongo.management.allowDropCollection" },
6841
+ allowInsertDocuments: { type: "boolean", description: "Set feathers.database.mongo.management.allowInsertDocuments" },
6842
+ allowPatchDocuments: { type: "boolean", description: "Set feathers.database.mongo.management.allowPatchDocuments" },
6843
+ allowReplaceDocuments: { type: "boolean", description: "Set feathers.database.mongo.management.allowReplaceDocuments" },
6844
+ allowRemoveDocuments: { type: "boolean", description: "Set feathers.database.mongo.management.allowRemoveDocuments" },
6749
6845
  dry: { type: "boolean", description: "Dry run without writes" }
6750
6846
  },
6751
6847
  run: async ({ args, rawArgs }) => {
@@ -6756,7 +6852,16 @@ function createCliCommand() {
6756
6852
  exposeDatabasesService: resolveBooleanCliArg(rawArgs, "exposeDatabasesService", args.exposeDatabasesService, true),
6757
6853
  exposeCollectionsService: resolveBooleanCliArg(rawArgs, "exposeCollectionsService", args.exposeCollectionsService, true),
6758
6854
  exposeUsersService: resolveBooleanCliArg(rawArgs, "exposeUsersService", args.exposeUsersService, false),
6759
- exposeCollectionCrud: resolveBooleanCliArg(rawArgs, "exposeCollectionCrud", args.exposeCollectionCrud, true)
6855
+ exposeCollectionCrud: resolveBooleanCliArg(rawArgs, "exposeCollectionCrud", args.exposeCollectionCrud, true),
6856
+ showSystemDatabases: resolveBooleanCliArg(rawArgs, "showSystemDatabases", args.showSystemDatabases, false),
6857
+ allowCreateDatabase: resolveBooleanCliArg(rawArgs, "allowCreateDatabase", args.allowCreateDatabase, false),
6858
+ allowDropDatabase: resolveBooleanCliArg(rawArgs, "allowDropDatabase", args.allowDropDatabase, false),
6859
+ allowCreateCollection: resolveBooleanCliArg(rawArgs, "allowCreateCollection", args.allowCreateCollection, false),
6860
+ allowDropCollection: resolveBooleanCliArg(rawArgs, "allowDropCollection", args.allowDropCollection, false),
6861
+ allowInsertDocuments: resolveBooleanCliArg(rawArgs, "allowInsertDocuments", args.allowInsertDocuments, false),
6862
+ allowPatchDocuments: resolveBooleanCliArg(rawArgs, "allowPatchDocuments", args.allowPatchDocuments, false),
6863
+ allowReplaceDocuments: resolveBooleanCliArg(rawArgs, "allowReplaceDocuments", args.allowReplaceDocuments, false),
6864
+ allowRemoveDocuments: resolveBooleanCliArg(rawArgs, "allowRemoveDocuments", args.allowRemoveDocuments, false)
6760
6865
  });
6761
6866
  }
6762
6867
  });
package/dist/module.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "compatibility": {
5
5
  "nuxt": "^4.0.0"
6
6
  },
7
- "version": "6.4.41",
7
+ "version": "6.4.45",
8
8
  "builder": {
9
9
  "@nuxt/module-builder": "1.0.2",
10
10
  "unbuild": "3.6.1"
@@ -31,6 +31,7 @@ export interface MongoManagementOptions {
31
31
  basePath?: string;
32
32
  whitelistDatabases?: string[];
33
33
  blacklistDatabases?: string[];
34
+ showSystemDatabases?: boolean;
34
35
  whitelistCollections?: string[];
35
36
  blacklistCollections?: string[];
36
37
  allowCreateDatabase?: boolean;
@@ -68,6 +69,7 @@ export interface ResolvedMongoManagementOptions {
68
69
  basePath: string;
69
70
  whitelistDatabases: string[];
70
71
  blacklistDatabases: string[];
72
+ showSystemDatabases: boolean;
71
73
  whitelistCollections: string[];
72
74
  blacklistCollections: string[];
73
75
  allowCreateDatabase: boolean;
@@ -97,6 +97,7 @@ export function resolveMongoOptions(mongodb) {
97
97
  basePath,
98
98
  whitelistDatabases: normalizeStringArray(mongodb.management?.whitelistDatabases),
99
99
  blacklistDatabases: normalizeStringArray(mongodb.management?.blacklistDatabases),
100
+ showSystemDatabases: mongodb.management?.showSystemDatabases === true,
100
101
  whitelistCollections: normalizeStringArray(mongodb.management?.whitelistCollections),
101
102
  blacklistCollections: normalizeStringArray(mongodb.management?.blacklistCollections),
102
103
  allowCreateDatabase: mongodb.management?.allowCreateDatabase === true,
@@ -124,7 +124,11 @@ export async function mongodb(app) {
124
124
  const baseOptions = {
125
125
  db,
126
126
  whitelistDatabases: Array.isArray(management.whitelistDatabases) && management.whitelistDatabases.length ? management.whitelistDatabases : undefined,
127
- blacklistDatabases: Array.isArray(management.blacklistDatabases) && management.blacklistDatabases.length ? management.blacklistDatabases : ['admin', 'config', 'local'],
127
+ blacklistDatabases: Array.isArray(management.blacklistDatabases) && management.blacklistDatabases.length
128
+ ? management.blacklistDatabases
129
+ : management.showSystemDatabases === true
130
+ ? undefined
131
+ : ['admin', 'config', 'local'],
128
132
  whitelistCollections: Array.isArray(management.whitelistCollections) && management.whitelistCollections.length ? management.whitelistCollections : undefined,
129
133
  blacklistCollections: Array.isArray(management.blacklistCollections) && management.blacklistCollections.length ? management.blacklistCollections : ['system.profile'],
130
134
  allowCreateDatabase: management.allowCreateDatabase === true,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nuxt-feathers-zod",
3
3
  "type": "module",
4
- "version": "6.4.41",
4
+ "version": "6.4.45",
5
5
  "packageManager": "bun@1.3.6",
6
6
  "description": "Feathers API integration for Nuxt",
7
7
  "author": "Herve de CHAVIGNY",