@djangocfg/nextjs 2.1.542 → 2.1.544
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/dist/config/index.d.mts +22 -9
- package/dist/config/index.mjs +40 -40
- package/dist/config/index.mjs.map +1 -1
- package/dist/health/index.d.mts +1 -1
- package/dist/health/index.mjs +5 -2
- package/dist/health/index.mjs.map +1 -1
- package/dist/i18n/routing.d.mts +20 -20
- package/dist/i18n/server.d.mts +2 -2
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +45 -42
- package/dist/index.mjs.map +1 -1
- package/dist/pwa/index.mjs +6 -5
- package/dist/pwa/index.mjs.map +1 -1
- package/dist/pwa/manifest.d.mts +1 -1
- package/dist/pwa/manifest.mjs +6 -5
- package/dist/pwa/manifest.mjs.map +1 -1
- package/dist/pwa/worker/index.mjs.map +1 -1
- package/dist/sitemap/index.d.mts +1 -1
- package/dist/{types-l9x1Rkmf.d.mts → types-CMxSgWnS.d.mts} +2 -0
- package/package.json +9 -9
- package/src/config/createNextConfig.ts +49 -26
- package/src/config/packages/installer.ts +11 -7
- package/src/config/packages/updater.ts +6 -6
- package/src/config/plugins/compression.ts +1 -1
- package/src/config/utils/deepMerge.ts +25 -21
- package/src/config/utils/version.ts +3 -3
- package/src/health/route.ts +5 -2
- package/src/pwa/manifest.ts +11 -8
- package/src/pwa/worker/index.ts +9 -7
- package/src/types.ts +2 -0
package/dist/health/index.d.mts
CHANGED
package/dist/health/index.mjs
CHANGED
|
@@ -14,7 +14,7 @@ function createHealthHandler(config = {}) {
|
|
|
14
14
|
if (!result) {
|
|
15
15
|
status = "error";
|
|
16
16
|
}
|
|
17
|
-
} catch
|
|
17
|
+
} catch {
|
|
18
18
|
checkResults[check.name] = false;
|
|
19
19
|
status = "error";
|
|
20
20
|
}
|
|
@@ -25,7 +25,10 @@ function createHealthHandler(config = {}) {
|
|
|
25
25
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
26
26
|
uptime: process.uptime(),
|
|
27
27
|
...version && { version },
|
|
28
|
-
...
|
|
28
|
+
...checks.length > 0 && {
|
|
29
|
+
checks: checkResults,
|
|
30
|
+
durationMs: Date.now() - startTime
|
|
31
|
+
},
|
|
29
32
|
...customData
|
|
30
33
|
};
|
|
31
34
|
const statusCode = status === "ok" ? 200 : 503;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/health/route.ts"],"sourcesContent":["/**\n * Health Route Handler for Next.js App Router\n *\n * Usage:\n * ```tsx\n * // app/healthz/route.ts\n * import { createHealthHandler } from '@djangocfg/nextjs/health';\n *\n * export const GET = createHealthHandler({\n * version: process.env.NEXT_PUBLIC_APP_VERSION || '1.0.0',\n * checks: [\n * {\n * name: 'database',\n * check: async () => {\n * // Check database connection\n * return await checkDatabase();\n * },\n * },\n * ],\n * });\n * ```\n */\n\nimport { NextResponse } from 'next/server';\n\nimport type { HealthConfig, HealthResponse } from './types';\n\nexport function createHealthHandler(config: HealthConfig = {}) {\n const { version, checks = [], customData = {} } = config;\n\n return async function GET() {\n const startTime = Date.now();\n let status: 'ok' | 'error' = 'ok';\n const checkResults: Record<string, boolean> = {};\n\n // Run health checks\n if (checks.length > 0) {\n for (const check of checks) {\n try {\n const result = await check.check();\n checkResults[check.name] = result;\n if (!result) {\n status = 'error';\n }\n } catch
|
|
1
|
+
{"version":3,"sources":["../../src/health/route.ts"],"sourcesContent":["/**\n * Health Route Handler for Next.js App Router\n *\n * Usage:\n * ```tsx\n * // app/healthz/route.ts\n * import { createHealthHandler } from '@djangocfg/nextjs/health';\n *\n * export const GET = createHealthHandler({\n * version: process.env.NEXT_PUBLIC_APP_VERSION || '1.0.0',\n * checks: [\n * {\n * name: 'database',\n * check: async () => {\n * // Check database connection\n * return await checkDatabase();\n * },\n * },\n * ],\n * });\n * ```\n */\n\nimport { NextResponse } from 'next/server';\n\nimport type { HealthConfig, HealthResponse } from './types';\n\nexport function createHealthHandler(config: HealthConfig = {}) {\n const { version, checks = [], customData = {} } = config;\n\n return async function GET() {\n const startTime = Date.now();\n let status: 'ok' | 'error' = 'ok';\n const checkResults: Record<string, boolean> = {};\n\n // Run health checks\n if (checks.length > 0) {\n for (const check of checks) {\n try {\n const result = await check.check();\n checkResults[check.name] = result;\n if (!result) {\n status = 'error';\n }\n } catch {\n checkResults[check.name] = false;\n status = 'error';\n }\n }\n }\n\n const response: HealthResponse = {\n status,\n timestamp: new Date().toISOString(),\n uptime: process.uptime(),\n ...(version && { version }),\n ...(checks.length > 0 && {\n checks: checkResults,\n durationMs: Date.now() - startTime,\n }),\n ...customData,\n };\n\n const statusCode = status === 'ok' ? 200 : 503;\n\n return NextResponse.json(response, { status: statusCode });\n };\n}\n"],"mappings":";AAuBA,SAAS,oBAAoB;AAItB,SAAS,oBAAoB,SAAuB,CAAC,GAAG;AAC7D,QAAM,EAAE,SAAS,SAAS,CAAC,GAAG,aAAa,CAAC,EAAE,IAAI;AAElD,SAAO,eAAe,MAAM;AAC1B,UAAM,YAAY,KAAK,IAAI;AAC3B,QAAI,SAAyB;AAC7B,UAAM,eAAwC,CAAC;AAG/C,QAAI,OAAO,SAAS,GAAG;AACrB,iBAAW,SAAS,QAAQ;AAC1B,YAAI;AACF,gBAAM,SAAS,MAAM,MAAM,MAAM;AACjC,uBAAa,MAAM,IAAI,IAAI;AAC3B,cAAI,CAAC,QAAQ;AACX,qBAAS;AAAA,UACX;AAAA,QACF,QAAQ;AACN,uBAAa,MAAM,IAAI,IAAI;AAC3B,mBAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAEA,UAAM,WAA2B;AAAA,MAC/B;AAAA,MACA,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,MAClC,QAAQ,QAAQ,OAAO;AAAA,MACvB,GAAI,WAAW,EAAE,QAAQ;AAAA,MACzB,GAAI,OAAO,SAAS,KAAK;AAAA,QACvB,QAAQ;AAAA,QACR,YAAY,KAAK,IAAI,IAAI;AAAA,MAC3B;AAAA,MACA,GAAG;AAAA,IACL;AAEA,UAAM,aAAa,WAAW,OAAO,MAAM;AAE3C,WAAO,aAAa,KAAK,UAAU,EAAE,QAAQ,WAAW,CAAC;AAAA,EAC3D;AACF;","names":[]}
|
package/dist/i18n/routing.d.mts
CHANGED
|
@@ -21,17 +21,17 @@ declare const DEFAULT_LOCALE: LocaleCode;
|
|
|
21
21
|
declare function createRouting(config?: Partial<I18nConfig>): {
|
|
22
22
|
locales: string[];
|
|
23
23
|
defaultLocale: string;
|
|
24
|
-
localePrefix?: next_intl_routing.LocalePrefix<string[], "always" | "as-needed" | "never"
|
|
25
|
-
domains?:
|
|
24
|
+
localePrefix?: next_intl_routing.LocalePrefix<string[], "always" | "as-needed" | "never"> | undefined;
|
|
25
|
+
domains?: undefined;
|
|
26
26
|
localeCookie?: boolean | {
|
|
27
|
-
maxAge?: number | undefined;
|
|
28
|
-
priority?: "low" | "medium" | "high" | undefined;
|
|
29
|
-
domain?: string | undefined;
|
|
30
|
-
path?: string | undefined;
|
|
31
|
-
secure?: boolean | undefined;
|
|
32
|
-
sameSite?: true | false | "lax" | "strict" | "none" | undefined;
|
|
33
|
-
partitioned?: boolean | undefined;
|
|
34
|
-
name?: string;
|
|
27
|
+
maxAge?: number | undefined | undefined;
|
|
28
|
+
priority?: "low" | "medium" | "high" | undefined | undefined;
|
|
29
|
+
domain?: string | undefined | undefined;
|
|
30
|
+
path?: string | undefined | undefined;
|
|
31
|
+
secure?: boolean | undefined | undefined;
|
|
32
|
+
sameSite?: true | false | "lax" | "strict" | "none" | undefined | undefined;
|
|
33
|
+
partitioned?: boolean | undefined | undefined;
|
|
34
|
+
name?: string | undefined;
|
|
35
35
|
};
|
|
36
36
|
alternateLinks?: boolean;
|
|
37
37
|
localeDetection?: boolean;
|
|
@@ -43,17 +43,17 @@ declare function createRouting(config?: Partial<I18nConfig>): {
|
|
|
43
43
|
declare const routing: {
|
|
44
44
|
locales: string[];
|
|
45
45
|
defaultLocale: string;
|
|
46
|
-
localePrefix?: next_intl_routing.LocalePrefix<string[], "always" | "as-needed" | "never"
|
|
47
|
-
domains?:
|
|
46
|
+
localePrefix?: next_intl_routing.LocalePrefix<string[], "always" | "as-needed" | "never"> | undefined;
|
|
47
|
+
domains?: undefined;
|
|
48
48
|
localeCookie?: boolean | {
|
|
49
|
-
maxAge?: number | undefined;
|
|
50
|
-
priority?: "low" | "medium" | "high" | undefined;
|
|
51
|
-
domain?: string | undefined;
|
|
52
|
-
path?: string | undefined;
|
|
53
|
-
secure?: boolean | undefined;
|
|
54
|
-
sameSite?: true | false | "lax" | "strict" | "none" | undefined;
|
|
55
|
-
partitioned?: boolean | undefined;
|
|
56
|
-
name?: string;
|
|
49
|
+
maxAge?: number | undefined | undefined;
|
|
50
|
+
priority?: "low" | "medium" | "high" | undefined | undefined;
|
|
51
|
+
domain?: string | undefined | undefined;
|
|
52
|
+
path?: string | undefined | undefined;
|
|
53
|
+
secure?: boolean | undefined | undefined;
|
|
54
|
+
sameSite?: true | false | "lax" | "strict" | "none" | undefined | undefined;
|
|
55
|
+
partitioned?: boolean | undefined | undefined;
|
|
56
|
+
name?: string | undefined;
|
|
57
57
|
};
|
|
58
58
|
alternateLinks?: boolean;
|
|
59
59
|
localeDetection?: boolean;
|
package/dist/i18n/server.d.mts
CHANGED
|
@@ -78,8 +78,8 @@ declare function generateLocalizedMetadata(params: Promise<LocaleParams> | Local
|
|
|
78
78
|
descriptionKey?: string;
|
|
79
79
|
namespace?: string;
|
|
80
80
|
}): Promise<{
|
|
81
|
-
title: string;
|
|
82
|
-
description: string;
|
|
81
|
+
title: string | undefined;
|
|
82
|
+
description: string | undefined;
|
|
83
83
|
alternates: {
|
|
84
84
|
languages: {
|
|
85
85
|
[x: string]: string;
|
package/dist/index.d.mts
CHANGED
|
@@ -4,7 +4,7 @@ export { BreadcrumbItem, MenuGroup, MenuItem, NavGroup, NavGroupWithRoutes, Navi
|
|
|
4
4
|
export { BaseNextConfigOptions, CSP_BASELINE_VENDORS, CSP_VENDOR_PRESETS, CompressionPluginOptions, CspOrigins, CspVendor, DEFAULT_OPTIMIZE_PACKAGES, DEFAULT_TRANSPILE_PACKAGES, DJANGOCFG_PACKAGES, DJANGO_CFG_BANNER, DevStartupPlugin, DevStartupPluginOptions, InstallOptions, InstallProgress, MissingPackage, OPTIONAL_PACKAGES, PACKAGE_NAME, PEER_DEPENDENCIES, PackageDefinition, PackageVersion, UpdateOptions, addCompressionPlugins, buildInstallCommand, buildSingleInstallCommand, checkAndInstallPackages, checkAndUpdatePackages, checkForUpdate, checkForUpdates, checkPackages, createBaseNextConfig, deepMerge, detectPackageManager, fetchLatestVersion, getApiUrl, getBasePath, getCurrentVersion, getInstalledVersion, getMissingPackages, getOutdatedPackages, getPackagesForContext, getSiteUrl, getUpdateCommand, installPackages, installPackagesWithProgress, isCI, isCompressionAvailable, isDev, isPackageInstalled, isProduction, isStaticBuild, printVersionInfo, resetDevStartupState, resetInstallerPreferences, resetUpdaterPreferences, resolveCspVendors, updatePackagesWithProgress } from './config/index.mjs';
|
|
5
5
|
export { A as AI_DOCS_HINT, a as AI_HINT, M as MCP_API_URL, b as MCP_BASE_URL, c as MCP_SERVER_URL } from './constants-BDS8GXHN.mjs';
|
|
6
6
|
export { DjangoCfgDocsClient, McpConfig, SearchOptions, SearchResult, getDocs, getInfo, getMcpConfig, search } from './ai/index.mjs';
|
|
7
|
-
export { C as ChangeFreq, E as ErrorPageConfig, H as HealthResponse, S as SitemapConfig, a as SitemapUrl } from './types-
|
|
7
|
+
export { C as ChangeFreq, E as ErrorPageConfig, H as HealthResponse, S as SitemapConfig, a as SitemapUrl } from './types-CMxSgWnS.mjs';
|
|
8
8
|
import 'next';
|
|
9
9
|
import 'next/server';
|
|
10
10
|
import 'lucide-react';
|
package/dist/index.mjs
CHANGED
|
@@ -190,7 +190,7 @@ function createHealthHandler(config = {}) {
|
|
|
190
190
|
if (!result) {
|
|
191
191
|
status = "error";
|
|
192
192
|
}
|
|
193
|
-
} catch
|
|
193
|
+
} catch {
|
|
194
194
|
checkResults[check.name] = false;
|
|
195
195
|
status = "error";
|
|
196
196
|
}
|
|
@@ -201,7 +201,10 @@ function createHealthHandler(config = {}) {
|
|
|
201
201
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
202
202
|
uptime: process.uptime(),
|
|
203
203
|
...version && { version },
|
|
204
|
-
...
|
|
204
|
+
...checks.length > 0 && {
|
|
205
|
+
checks: checkResults,
|
|
206
|
+
durationMs: Date.now() - startTime
|
|
207
|
+
},
|
|
205
208
|
...customData
|
|
206
209
|
};
|
|
207
210
|
const statusCode = status === "ok" ? 200 : 503;
|
|
@@ -620,7 +623,7 @@ function addCompressionPlugins(config, options = {}) {
|
|
|
620
623
|
);
|
|
621
624
|
}
|
|
622
625
|
return true;
|
|
623
|
-
} catch
|
|
626
|
+
} catch {
|
|
624
627
|
return false;
|
|
625
628
|
}
|
|
626
629
|
}
|
|
@@ -831,7 +834,7 @@ async function installSinglePackage(pkg, pm, index, total) {
|
|
|
831
834
|
const spinner = createSpinner(`${chalk.dim(progress)} Installing ${chalk.cyan(pkg.name)}...`);
|
|
832
835
|
spinner.start();
|
|
833
836
|
return new Promise((resolve) => {
|
|
834
|
-
const [cmd, ...args] = command.split(" ");
|
|
837
|
+
const [cmd = pm, ...args] = command.split(" ");
|
|
835
838
|
const proc = spawn(cmd, args, {
|
|
836
839
|
shell: true,
|
|
837
840
|
cwd: process.cwd(),
|
|
@@ -867,13 +870,13 @@ async function installPackagesWithProgress(packages) {
|
|
|
867
870
|
console.log(chalk.bold(` Installing ${total} package${total > 1 ? "s" : ""}...`));
|
|
868
871
|
console.log("");
|
|
869
872
|
let successCount = 0;
|
|
870
|
-
|
|
871
|
-
for (
|
|
872
|
-
const success = await installSinglePackage(
|
|
873
|
+
const failedPackages = [];
|
|
874
|
+
for (const [i, pkg] of packages.entries()) {
|
|
875
|
+
const success = await installSinglePackage(pkg, pm, i, total);
|
|
873
876
|
if (success) {
|
|
874
877
|
successCount++;
|
|
875
878
|
} else {
|
|
876
|
-
failedPackages.push(
|
|
879
|
+
failedPackages.push(pkg.name);
|
|
877
880
|
}
|
|
878
881
|
}
|
|
879
882
|
console.log("");
|
|
@@ -1238,12 +1241,12 @@ async function updatePackagesWithProgress(packages) {
|
|
|
1238
1241
|
console.log("");
|
|
1239
1242
|
let successCount = 0;
|
|
1240
1243
|
const failedPackages = [];
|
|
1241
|
-
for (
|
|
1242
|
-
const success = await updateSinglePackage(
|
|
1244
|
+
for (const [i, pkg] of packages.entries()) {
|
|
1245
|
+
const success = await updateSinglePackage(pkg, pm, i, total);
|
|
1243
1246
|
if (success) {
|
|
1244
1247
|
successCount++;
|
|
1245
1248
|
} else {
|
|
1246
|
-
failedPackages.push(
|
|
1249
|
+
failedPackages.push(pkg.name);
|
|
1247
1250
|
}
|
|
1248
1251
|
}
|
|
1249
1252
|
console.log("");
|
|
@@ -1499,22 +1502,17 @@ function resetDevStartupState() {
|
|
|
1499
1502
|
}
|
|
1500
1503
|
|
|
1501
1504
|
// src/config/utils/deepMerge.ts
|
|
1505
|
+
function isPlainObject(value) {
|
|
1506
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1507
|
+
}
|
|
1502
1508
|
function deepMerge(target, source) {
|
|
1503
1509
|
const output = { ...target };
|
|
1504
|
-
for (const key
|
|
1505
|
-
|
|
1506
|
-
if (
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
if (targetValue && typeof targetValue === "object" && !Array.isArray(targetValue)) {
|
|
1511
|
-
output[key] = deepMerge(targetValue, source[key]);
|
|
1512
|
-
} else {
|
|
1513
|
-
output[key] = source[key];
|
|
1514
|
-
}
|
|
1515
|
-
} else {
|
|
1516
|
-
output[key] = source[key];
|
|
1517
|
-
}
|
|
1510
|
+
for (const key of Object.keys(source)) {
|
|
1511
|
+
const sourceValue = source[key];
|
|
1512
|
+
if (sourceValue === void 0) continue;
|
|
1513
|
+
const targetValue = output[key];
|
|
1514
|
+
const merged = isPlainObject(sourceValue) && isPlainObject(targetValue) ? deepMerge(targetValue, sourceValue) : sourceValue;
|
|
1515
|
+
output[key] = merged;
|
|
1518
1516
|
}
|
|
1519
1517
|
return output;
|
|
1520
1518
|
}
|
|
@@ -1724,23 +1722,28 @@ function createBaseNextConfig(options = {}) {
|
|
|
1724
1722
|
return config;
|
|
1725
1723
|
}
|
|
1726
1724
|
};
|
|
1727
|
-
const {
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1725
|
+
const { i18n: i18nOptions, pwa: pwaOptions } = options;
|
|
1726
|
+
const DJANGOCFG_ONLY_KEYS = [
|
|
1727
|
+
"i18n",
|
|
1728
|
+
"pwa",
|
|
1729
|
+
"transpilePackages",
|
|
1730
|
+
"optimizePackageImports",
|
|
1731
|
+
"isDefaultCfgAdmin",
|
|
1732
|
+
"checkUpdates",
|
|
1733
|
+
"autoUpdate",
|
|
1734
|
+
"forceCheckWorkspace",
|
|
1735
|
+
"checkPackages",
|
|
1736
|
+
"autoInstall",
|
|
1737
|
+
"allowIframeFrom",
|
|
1738
|
+
"dpop",
|
|
1739
|
+
"stripe",
|
|
1740
|
+
"csp"
|
|
1741
|
+
];
|
|
1742
|
+
const nextConfigOptions = Object.fromEntries(
|
|
1743
|
+
Object.entries(options).filter(
|
|
1744
|
+
([key]) => !DJANGOCFG_ONLY_KEYS.includes(key)
|
|
1745
|
+
)
|
|
1746
|
+
);
|
|
1744
1747
|
let finalConfig = deepMerge(baseConfig, nextConfigOptions);
|
|
1745
1748
|
if (pwaOptions) {
|
|
1746
1749
|
finalConfig = withPWA(finalConfig, pwaOptions);
|