nextly 0.0.1 → 0.0.2-alpha.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/LICENSE +22 -0
- package/README.md +122 -0
- package/dist/_dts-chunks/collections-handler.d-DjgO74Wt.d.ts +20540 -0
- package/dist/_dts-chunks/config.d-DNwsDnjs.d.ts +2589 -0
- package/dist/_dts-chunks/define-component.d-BUgTHmt3.d.ts +1149 -0
- package/dist/_dts-chunks/image-processor.d-OO1PmMrv.d.ts +335 -0
- package/dist/_dts-chunks/index.d-axCAzZ7m.d.ts +17842 -0
- package/dist/_dts-chunks/media.d-DjDOZo4B.d.ts +117 -0
- package/dist/_dts-chunks/on-error.d-CHIKWNxd.d.ts +38 -0
- package/dist/_dts-chunks/storage.d-BUhQ2we_.d.ts +404 -0
- package/dist/actions/index.d.ts +239 -0
- package/dist/actions/index.mjs +281 -0
- package/dist/api/auth-state.d.ts +5 -0
- package/dist/api/auth-state.mjs +131 -0
- package/dist/api/collections-schema-detail.d.ts +56 -0
- package/dist/api/collections-schema-detail.mjs +244 -0
- package/dist/api/collections-schema-export.d.ts +56 -0
- package/dist/api/collections-schema-export.mjs +129 -0
- package/dist/api/collections-schema.d.ts +59 -0
- package/dist/api/collections-schema.mjs +207 -0
- package/dist/api/components-detail.d.ts +50 -0
- package/dist/api/components-detail.mjs +132 -0
- package/dist/api/components.d.ts +69 -0
- package/dist/api/components.mjs +144 -0
- package/dist/api/email-providers-default.d.ts +40 -0
- package/dist/api/email-providers-default.mjs +75 -0
- package/dist/api/email-providers-detail.d.ts +81 -0
- package/dist/api/email-providers-detail.mjs +109 -0
- package/dist/api/email-providers-test.d.ts +43 -0
- package/dist/api/email-providers-test.mjs +114 -0
- package/dist/api/email-providers.d.ts +69 -0
- package/dist/api/email-providers.mjs +110 -0
- package/dist/api/email-send-template.d.ts +41 -0
- package/dist/api/email-send-template.mjs +58 -0
- package/dist/api/email-send.d.ts +42 -0
- package/dist/api/email-send.mjs +58 -0
- package/dist/api/email-templates-detail.d.ts +74 -0
- package/dist/api/email-templates-detail.mjs +112 -0
- package/dist/api/email-templates-layout.d.ts +55 -0
- package/dist/api/email-templates-layout.mjs +92 -0
- package/dist/api/email-templates-preview.d.ts +48 -0
- package/dist/api/email-templates-preview.mjs +93 -0
- package/dist/api/email-templates.d.ts +61 -0
- package/dist/api/email-templates.mjs +118 -0
- package/dist/api/health.d.ts +68 -0
- package/dist/api/health.mjs +67 -0
- package/dist/api/index.d.ts +54 -0
- package/dist/api/index.mjs +16 -0
- package/dist/api/media-bulk.d.ts +74 -0
- package/dist/api/media-bulk.mjs +196 -0
- package/dist/api/media-folders.d.ts +112 -0
- package/dist/api/media-folders.mjs +187 -0
- package/dist/api/media-handlers.d.ts +102 -0
- package/dist/api/media-handlers.mjs +437 -0
- package/dist/api/media.d.ts +117 -0
- package/dist/api/media.mjs +242 -0
- package/dist/api/singles-detail.d.ts +87 -0
- package/dist/api/singles-detail.mjs +170 -0
- package/dist/api/singles-schema-detail.d.ts +54 -0
- package/dist/api/singles-schema-detail.mjs +182 -0
- package/dist/api/singles.d.ts +34 -0
- package/dist/api/singles.mjs +94 -0
- package/dist/api/storage-upload-url.d.ts +48 -0
- package/dist/api/storage-upload-url.mjs +202 -0
- package/dist/api/uploads.d.ts +109 -0
- package/dist/api/uploads.mjs +359 -0
- package/dist/auth/index.d.ts +425 -0
- package/dist/auth/index.mjs +199 -0
- package/dist/boot-apply-PQSYLDIN.mjs +7 -0
- package/dist/chunk-2OALJTK6.mjs +489 -0
- package/dist/chunk-2Q2SX2CS.mjs +365 -0
- package/dist/chunk-2TFX4ND3.mjs +13 -0
- package/dist/chunk-2TWPDSYD.mjs +87 -0
- package/dist/chunk-2W3DVD7S.mjs +647 -0
- package/dist/chunk-2ZFKXPQM.mjs +88 -0
- package/dist/chunk-3FA7FKAV.mjs +832 -0
- package/dist/chunk-3NZ2KMBL.mjs +58 -0
- package/dist/chunk-4MJLT6PZ.mjs +0 -0
- package/dist/chunk-56WO4WX7.mjs +0 -0
- package/dist/chunk-5APFUGAD.mjs +89 -0
- package/dist/chunk-5HMZ644B.mjs +108 -0
- package/dist/chunk-67GXH6PR.mjs +32 -0
- package/dist/chunk-6JNEPWRW.mjs +14368 -0
- package/dist/chunk-6NFHQIJD.mjs +45 -0
- package/dist/chunk-7P6ASYW6.mjs +9 -0
- package/dist/chunk-A3WPLSDT.mjs +1364 -0
- package/dist/chunk-AGJ6F2T3.mjs +144 -0
- package/dist/chunk-AK6Z23OX.mjs +1464 -0
- package/dist/chunk-APKKRD2G.mjs +102 -0
- package/dist/chunk-B2GV2BWH.mjs +73 -0
- package/dist/chunk-D5HQBNUB.mjs +74 -0
- package/dist/chunk-DNNG377Z.mjs +204 -0
- package/dist/chunk-DP3G27G5.mjs +135 -0
- package/dist/chunk-DV6WVX2Q.mjs +0 -0
- package/dist/chunk-DXGGXIUZ.mjs +57 -0
- package/dist/chunk-EGXBZCGC.mjs +943 -0
- package/dist/chunk-ERCNLX3V.mjs +176 -0
- package/dist/chunk-FQULBZ53.mjs +850 -0
- package/dist/chunk-G2AA4QLC.mjs +262 -0
- package/dist/chunk-GDBJ5JCU.mjs +488 -0
- package/dist/chunk-GJNSJU4S.mjs +19 -0
- package/dist/chunk-GZ6DCQKC.mjs +69 -0
- package/dist/chunk-H26B4FYG.mjs +167 -0
- package/dist/chunk-I4JMR3UR.mjs +21 -0
- package/dist/chunk-INV7QKLG.mjs +508 -0
- package/dist/chunk-IUDOC7N7.mjs +46 -0
- package/dist/chunk-IZWPRDC3.mjs +206 -0
- package/dist/chunk-KIMNCZGV.mjs +15 -0
- package/dist/chunk-L6HW2DA7.mjs +15 -0
- package/dist/chunk-LAZXX4HR.mjs +100 -0
- package/dist/chunk-LDKCUMHK.mjs +95 -0
- package/dist/chunk-LRXMECUA.mjs +0 -0
- package/dist/chunk-M52VMPGA.mjs +119 -0
- package/dist/chunk-MGUWEEI6.mjs +160 -0
- package/dist/chunk-NRUWQ5Z7.mjs +419 -0
- package/dist/chunk-NSEFNNU4.mjs +25360 -0
- package/dist/chunk-NTHVDFGO.mjs +138 -0
- package/dist/chunk-O3QHXMOX.mjs +3166 -0
- package/dist/chunk-P7NH2OSC.mjs +2605 -0
- package/dist/chunk-PKMABBB5.mjs +184 -0
- package/dist/chunk-PWS6XGJK.mjs +76 -0
- package/dist/chunk-R6JJQHFC.mjs +20 -0
- package/dist/chunk-RJLLGGPG.mjs +0 -0
- package/dist/chunk-SBACDPNX.mjs +689 -0
- package/dist/chunk-TO5AFLVQ.mjs +124 -0
- package/dist/chunk-TS7GHTG2.mjs +5436 -0
- package/dist/chunk-UJ2IMJ4W.mjs +133 -0
- package/dist/chunk-UOP63Q54.mjs +102 -0
- package/dist/chunk-UUOFWCM6.mjs +78 -0
- package/dist/chunk-V4EQTOA4.mjs +893 -0
- package/dist/chunk-VJ66NCL4.mjs +193 -0
- package/dist/chunk-VQJQHVEV.mjs +29 -0
- package/dist/chunk-VTJADRO3.mjs +141 -0
- package/dist/chunk-VWF3JO32.mjs +0 -0
- package/dist/chunk-W4MGXIRR.mjs +27 -0
- package/dist/chunk-W5KKPZT5.mjs +1204 -0
- package/dist/chunk-WD34YQ6T.mjs +381 -0
- package/dist/chunk-WZBYMYVW.mjs +14 -0
- package/dist/chunk-X23WKS3Z.mjs +50 -0
- package/dist/chunk-X7TXCYYN.mjs +6496 -0
- package/dist/chunk-XGI4EMS3.mjs +140 -0
- package/dist/chunk-XZKLBMN6.mjs +1153 -0
- package/dist/chunk-YB7INWPY.mjs +0 -0
- package/dist/chunk-YV4Y7SDL.mjs +83 -0
- package/dist/chunk-YZNBLFIW.mjs +1688 -0
- package/dist/chunk-YZZCTONM.mjs +263 -0
- package/dist/chunk-ZE6A3FYH.mjs +289 -0
- package/dist/cli/nextly.mjs +68 -0
- package/dist/cli/utils/index.d.ts +449 -0
- package/dist/cli/utils/index.mjs +49 -0
- package/dist/component-schema-service-5577KVW6.mjs +11 -0
- package/dist/config-loader-23YEMC3Z.mjs +23 -0
- package/dist/config.d.ts +44 -0
- package/dist/config.mjs +109 -0
- package/dist/container-ORGFGYSZ.mjs +9 -0
- package/dist/database/index.d.ts +12 -0
- package/dist/database/index.mjs +40 -0
- package/dist/database/seeders/index.d.ts +93 -0
- package/dist/database/seeders/index.mjs +47 -0
- package/dist/db-sync-demote-LJGKLB3S.mjs +117 -0
- package/dist/db-sync-promote-B26VSYQF.mjs +113 -0
- package/dist/dev-reload-broadcaster-B73IQ53V.mjs +25 -0
- package/dist/dist-M2NOU37V.mjs +19 -0
- package/dist/drizzle-kit-lazy-D2M2PXR2.mjs +13 -0
- package/dist/dynamic-collection-schema-service-IEXTPIZ7.mjs +8 -0
- package/dist/errors/index.d.ts +159 -0
- package/dist/errors/index.mjs +10 -0
- package/dist/factory-IWMBKUJM.mjs +15 -0
- package/dist/first-run-QIVKWJIF.mjs +63 -0
- package/dist/fresh-push-NR67DC3R.mjs +8 -0
- package/dist/index.d.ts +4175 -0
- package/dist/index.mjs +1336 -0
- package/dist/local-plugin-PTET4NAT.mjs +7 -0
- package/dist/logger-NU46DXNY.mjs +15 -0
- package/dist/logger-YE4TC7ZN.mjs +9 -0
- package/dist/migration-journal-EP532Y4L.mjs +139 -0
- package/dist/migrations/mysql/0000_eager_sentry.sql +174 -0
- package/dist/migrations/mysql/0001_soft_giant_girl.sql +27 -0
- package/dist/migrations/mysql/0002_media_table.sql +24 -0
- package/dist/migrations/mysql/0003_dynamic_singles.sql +37 -0
- package/dist/migrations/mysql/0004_dynamic_components.sql +35 -0
- package/dist/migrations/mysql/0005_user_management_tables.sql +92 -0
- package/dist/migrations/mysql/0006_api_keys.sql +36 -0
- package/dist/migrations/mysql/0007_general_settings.sql +20 -0
- package/dist/migrations/mysql/0008_site_settings_logo_url.sql +9 -0
- package/dist/migrations/mysql/0009_activity_log.sql +30 -0
- package/dist/migrations/mysql/0010_site_settings_sidebar.sql +13 -0
- package/dist/migrations/mysql/0011_missing_tables_and_columns.sql +54 -0
- package/dist/migrations/mysql/0012_image_sizes_and_focal_point.sql +30 -0
- package/dist/migrations/mysql/0012_media_folders.sql +43 -0
- package/dist/migrations/mysql/0013_user_brute_force_protection.sql +31 -0
- package/dist/migrations/mysql/0014_email_template_attachments.sql +12 -0
- package/dist/migrations/mysql/0015_media_uploaded_by_nullable.sql +15 -0
- package/dist/migrations/mysql/20260429_000000_000_initial_journal.sql +22 -0
- package/dist/migrations/mysql/20260501_000000_journal_batch.sql +17 -0
- package/dist/migrations/mysql/20260501_000001_audit_log.sql +24 -0
- package/dist/migrations/mysql/20260504_000000_nextly_meta.sql +21 -0
- package/dist/migrations/mysql/meta/0000_snapshot.json +1005 -0
- package/dist/migrations/mysql/meta/0001_snapshot.json +1099 -0
- package/dist/migrations/mysql/meta/_journal.json +41 -0
- package/dist/migrations/postgresql/0000_misty_king_bedlam.sql +169 -0
- package/dist/migrations/postgresql/0001_perpetual_captain_marvel.sql +8 -0
- package/dist/migrations/postgresql/0002_sad_spectrum.sql +16 -0
- package/dist/migrations/postgresql/0003_hesitant_ultron.sql +17 -0
- package/dist/migrations/postgresql/0004_media_table.sql +24 -0
- package/dist/migrations/postgresql/0005_media_folders.sql +36 -0
- package/dist/migrations/postgresql/0006_dynamic_collections_update.sql +50 -0
- package/dist/migrations/postgresql/0007_dynamic_singles.sql +38 -0
- package/dist/migrations/postgresql/0008_dynamic_components.sql +37 -0
- package/dist/migrations/postgresql/0009_user_management_tables.sql +95 -0
- package/dist/migrations/postgresql/0010_api_keys.sql +34 -0
- package/dist/migrations/postgresql/0011_general_settings.sql +20 -0
- package/dist/migrations/postgresql/0012_site_settings_logo_url.sql +9 -0
- package/dist/migrations/postgresql/0013_activity_log.sql +29 -0
- package/dist/migrations/postgresql/0014_image_sizes_and_focal_point.sql +33 -0
- package/dist/migrations/postgresql/0014_site_settings_sidebar.sql +13 -0
- package/dist/migrations/postgresql/0015_user_brute_force_protection.sql +29 -0
- package/dist/migrations/postgresql/0016_email_template_attachments.sql +12 -0
- package/dist/migrations/postgresql/0017_media_uploaded_by_nullable.sql +15 -0
- package/dist/migrations/postgresql/20260429_000000_000_initial_journal.sql +24 -0
- package/dist/migrations/postgresql/20260501_000000_journal_batch.sql +17 -0
- package/dist/migrations/postgresql/20260501_000001_audit_log.sql +24 -0
- package/dist/migrations/postgresql/20260504_000000_nextly_meta.sql +22 -0
- package/dist/migrations/postgresql/meta/0000_snapshot.json +1286 -0
- package/dist/migrations/postgresql/meta/0001_snapshot.json +1407 -0
- package/dist/migrations/postgresql/meta/0002_snapshot.json +1552 -0
- package/dist/migrations/postgresql/meta/0003_snapshot.json +1695 -0
- package/dist/migrations/postgresql/meta/0010_snapshot.json +2345 -0
- package/dist/migrations/postgresql/meta/_journal.json +90 -0
- package/dist/migrations/sqlite/0000_api_keys.sql +34 -0
- package/dist/migrations/sqlite/0001_general_settings.sql +20 -0
- package/dist/migrations/sqlite/0002_site_settings_logo_url.sql +9 -0
- package/dist/migrations/sqlite/0003_activity_log.sql +29 -0
- package/dist/migrations/sqlite/0004_image_sizes_and_focal_point.sql +29 -0
- package/dist/migrations/sqlite/0004_site_settings_sidebar.sql +11 -0
- package/dist/migrations/sqlite/0005_user_brute_force_protection.sql +29 -0
- package/dist/migrations/sqlite/0006_email_template_attachments.sql +12 -0
- package/dist/migrations/sqlite/0007_media_uploaded_by_nullable.sql +111 -0
- package/dist/migrations/sqlite/20260429_000000_000_initial_journal.sql +24 -0
- package/dist/migrations/sqlite/20260501_000000_journal_batch.sql +19 -0
- package/dist/migrations/sqlite/20260501_000001_audit_log.sql +24 -0
- package/dist/migrations/sqlite/20260504_000000_nextly_meta.sql +21 -0
- package/dist/migrations/sqlite/20260505_000000_user_management_tables.sql +77 -0
- package/dist/next.d.ts +57 -0
- package/dist/next.mjs +55 -0
- package/dist/observability/index.d.ts +87 -0
- package/dist/observability/index.mjs +57 -0
- package/dist/permissions-3DZZQZMI.mjs +39 -0
- package/dist/pipeline-YOML7SWF.mjs +29 -0
- package/dist/preview-ZZTR3QGS.mjs +9 -0
- package/dist/program-PW6UB2ZC.mjs +5934 -0
- package/dist/reconcile-single-tables-7ENVXJGB.mjs +7 -0
- package/dist/register-SF6E6FVU.mjs +49 -0
- package/dist/reload-config-HWQ4G5MM.mjs +23 -0
- package/dist/resolve-single-table-name-JSOMUB3R.mjs +7 -0
- package/dist/routeHandler-UNMMJIBM.mjs +77 -0
- package/dist/runtime-schema-generator-NRA6A6Z6.mjs +8 -0
- package/dist/runtime.d.ts +120 -0
- package/dist/runtime.mjs +73 -0
- package/dist/schema-hash-FMMG6VPJ.mjs +13 -0
- package/dist/schema-registry-EQ36FZDP.mjs +7 -0
- package/dist/scripts/load-env.mjs +42 -0
- package/dist/storage/index.d.ts +566 -0
- package/dist/storage/index.mjs +45 -0
- package/dist/super-admin-G5ZK5F4T.mjs +39 -0
- package/dist/system-table-service-WGSRVEGT.mjs +17 -0
- package/dist/users-7KELGRYJ.mjs +38 -0
- package/package.json +308 -9
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ServiceContainer
|
|
3
|
+
} from "./chunk-NSEFNNU4.mjs";
|
|
4
|
+
|
|
5
|
+
// src/database/seeders/super-admin.ts
|
|
6
|
+
var DEFAULT_SUPER_ADMIN = {
|
|
7
|
+
email: "admin@example.com",
|
|
8
|
+
password: "Admin@123456",
|
|
9
|
+
name: "Super Admin"
|
|
10
|
+
};
|
|
11
|
+
async function seedSuperAdmin(adapter, options) {
|
|
12
|
+
const {
|
|
13
|
+
email = DEFAULT_SUPER_ADMIN.email,
|
|
14
|
+
password = DEFAULT_SUPER_ADMIN.password,
|
|
15
|
+
name = DEFAULT_SUPER_ADMIN.name,
|
|
16
|
+
silent = false
|
|
17
|
+
} = options || {};
|
|
18
|
+
const log = silent ? () => {
|
|
19
|
+
} : console.log;
|
|
20
|
+
const errorLog = silent ? () => {
|
|
21
|
+
} : console.error;
|
|
22
|
+
log(" Starting super admin seeding...\n");
|
|
23
|
+
if (typeof adapter.getDrizzle !== "function") {
|
|
24
|
+
throw new Error(
|
|
25
|
+
`Seeding not supported for adapter. Adapter must have getDrizzle() method.`
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
const container = new ServiceContainer(adapter);
|
|
29
|
+
const roleService = container.roles;
|
|
30
|
+
const permissionService = container.permissions;
|
|
31
|
+
const rolePermissionService = container.rolePermissions;
|
|
32
|
+
const userRoleService = container.userRoles;
|
|
33
|
+
const userService = container.users;
|
|
34
|
+
let created = 0;
|
|
35
|
+
let skipped = 0;
|
|
36
|
+
let errors = 0;
|
|
37
|
+
const errorMessages = [];
|
|
38
|
+
try {
|
|
39
|
+
log(" Checking for existing super admin user...");
|
|
40
|
+
const existingUser = await userService.findByEmail(email);
|
|
41
|
+
let userId;
|
|
42
|
+
if (existingUser) {
|
|
43
|
+
log(` User already exists: ${email}`);
|
|
44
|
+
userId = String(existingUser.id);
|
|
45
|
+
skipped++;
|
|
46
|
+
} else {
|
|
47
|
+
log(` Creating super admin user: ${email}`);
|
|
48
|
+
const newUser = await userService.createLocalUser({
|
|
49
|
+
email,
|
|
50
|
+
name,
|
|
51
|
+
password,
|
|
52
|
+
// Will be hashed by createLocalUser
|
|
53
|
+
isActive: true
|
|
54
|
+
});
|
|
55
|
+
userId = String(newUser.id);
|
|
56
|
+
created++;
|
|
57
|
+
await userService.updateUser(userId, { emailVerified: /* @__PURE__ */ new Date() }).catch(() => {
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
log("\n Fetching all permissions...");
|
|
61
|
+
const allPermissionsResult = await permissionService.listPermissions({
|
|
62
|
+
limit: 1e3
|
|
63
|
+
});
|
|
64
|
+
const allPermissions = allPermissionsResult.data;
|
|
65
|
+
log(` Found ${allPermissions.length} permissions`);
|
|
66
|
+
log("\nChecking for Super Admin role...");
|
|
67
|
+
const existingRole = await roleService.getRoleByName("Super Admin");
|
|
68
|
+
let roleId;
|
|
69
|
+
let roleAlreadyExists = false;
|
|
70
|
+
if (existingRole) {
|
|
71
|
+
log(" Super Admin role already exists");
|
|
72
|
+
roleId = String(existingRole.id);
|
|
73
|
+
roleAlreadyExists = true;
|
|
74
|
+
skipped++;
|
|
75
|
+
} else {
|
|
76
|
+
log(" Creating Super Admin role with all permissions");
|
|
77
|
+
const allPermissionIds = allPermissions.map(
|
|
78
|
+
(p) => String(p.id)
|
|
79
|
+
);
|
|
80
|
+
const newRole = await roleService.createRole({
|
|
81
|
+
name: "Super Admin",
|
|
82
|
+
slug: "super-admin",
|
|
83
|
+
description: "Has all permissions in the system",
|
|
84
|
+
permissionIds: allPermissionIds,
|
|
85
|
+
isSystem: true,
|
|
86
|
+
level: 100
|
|
87
|
+
// Highest level
|
|
88
|
+
});
|
|
89
|
+
roleId = String(newRole.id);
|
|
90
|
+
created++;
|
|
91
|
+
created += allPermissionIds.length;
|
|
92
|
+
}
|
|
93
|
+
if (roleAlreadyExists) {
|
|
94
|
+
log("\n Ensuring Super Admin role has all permissions...");
|
|
95
|
+
let assignedCount = 0;
|
|
96
|
+
for (const permission of allPermissions) {
|
|
97
|
+
try {
|
|
98
|
+
await rolePermissionService.addPermissionToRole(roleId, {
|
|
99
|
+
action: permission.action,
|
|
100
|
+
resource: permission.resource,
|
|
101
|
+
name: permission.name
|
|
102
|
+
});
|
|
103
|
+
assignedCount++;
|
|
104
|
+
} catch (error) {
|
|
105
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
106
|
+
if (!errorMsg.includes("already") && !errorMsg.includes("exists")) {
|
|
107
|
+
errorLog(
|
|
108
|
+
`Failed to assign permission ${permission.action}:${permission.resource}: ${errorMsg}`
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
log(`Ensured ${assignedCount} permissions are assigned`);
|
|
114
|
+
created += assignedCount;
|
|
115
|
+
}
|
|
116
|
+
log("\n Assigning Super Admin role to user...");
|
|
117
|
+
const userRoleResult = await userRoleService.assignRoleToUser(
|
|
118
|
+
userId,
|
|
119
|
+
roleId
|
|
120
|
+
);
|
|
121
|
+
if (userRoleResult.success) {
|
|
122
|
+
if (userRoleResult.statusCode === 201) {
|
|
123
|
+
log("Role assigned to user");
|
|
124
|
+
created++;
|
|
125
|
+
} else if (userRoleResult.statusCode === 409) {
|
|
126
|
+
log("User already has this role");
|
|
127
|
+
skipped++;
|
|
128
|
+
}
|
|
129
|
+
} else if (userRoleResult.statusCode === 409) {
|
|
130
|
+
log("User already has this role");
|
|
131
|
+
skipped++;
|
|
132
|
+
} else {
|
|
133
|
+
const errorMsg = `Failed to assign role to user: ${userRoleResult.message}`;
|
|
134
|
+
errorLog(` ${errorMsg}`);
|
|
135
|
+
errorMessages.push(errorMsg);
|
|
136
|
+
errors++;
|
|
137
|
+
}
|
|
138
|
+
log("\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501");
|
|
139
|
+
log("Super Admin Seeding Summary:");
|
|
140
|
+
log(` Created: ${created}`);
|
|
141
|
+
log(` Skipped: ${skipped}`);
|
|
142
|
+
log(` Errors: ${errors}`);
|
|
143
|
+
log(` Total: ${created + skipped + errors}`);
|
|
144
|
+
log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n");
|
|
145
|
+
if (errors === 0) {
|
|
146
|
+
log("Super admin seeding completed successfully!");
|
|
147
|
+
log(`
|
|
148
|
+
Login credentials:`);
|
|
149
|
+
log(`Email: ${email}`);
|
|
150
|
+
log(`Password: ${password}`);
|
|
151
|
+
log(`
|
|
152
|
+
IMPORTANT: Change the password after first login!
|
|
153
|
+
`);
|
|
154
|
+
} else {
|
|
155
|
+
errorLog("Some operations failed during super admin seeding.");
|
|
156
|
+
}
|
|
157
|
+
return {
|
|
158
|
+
success: errors === 0,
|
|
159
|
+
created,
|
|
160
|
+
skipped,
|
|
161
|
+
errors,
|
|
162
|
+
total: created + skipped + errors,
|
|
163
|
+
errorMessages: errorMessages.length > 0 ? errorMessages : void 0
|
|
164
|
+
};
|
|
165
|
+
} catch (error) {
|
|
166
|
+
const errorMsg = `Unexpected error during super admin seeding: ${error instanceof Error ? error.message : String(error)}`;
|
|
167
|
+
errorLog(`
|
|
168
|
+
${errorMsg}`);
|
|
169
|
+
errorMessages.push(errorMsg);
|
|
170
|
+
errors++;
|
|
171
|
+
return {
|
|
172
|
+
success: false,
|
|
173
|
+
created,
|
|
174
|
+
skipped,
|
|
175
|
+
errors,
|
|
176
|
+
total: created + skipped + errors,
|
|
177
|
+
errorMessages
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
export {
|
|
183
|
+
seedSuperAdmin
|
|
184
|
+
};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// src/utils/color-utils.ts
|
|
2
|
+
function hexToHslTriplet(hex) {
|
|
3
|
+
const clean = hex.replace("#", "");
|
|
4
|
+
const r = parseInt(clean.slice(0, 2), 16) / 255;
|
|
5
|
+
const g = parseInt(clean.slice(2, 4), 16) / 255;
|
|
6
|
+
const b = parseInt(clean.slice(4, 6), 16) / 255;
|
|
7
|
+
const max = Math.max(r, g, b);
|
|
8
|
+
const min = Math.min(r, g, b);
|
|
9
|
+
const l = (max + min) / 2;
|
|
10
|
+
let h = 0;
|
|
11
|
+
let s = 0;
|
|
12
|
+
if (max !== min) {
|
|
13
|
+
const d = max - min;
|
|
14
|
+
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
|
15
|
+
switch (max) {
|
|
16
|
+
case r:
|
|
17
|
+
h = ((g - b) / d + (g < b ? 6 : 0)) / 6;
|
|
18
|
+
break;
|
|
19
|
+
case g:
|
|
20
|
+
h = ((b - r) / d + 2) / 6;
|
|
21
|
+
break;
|
|
22
|
+
case b:
|
|
23
|
+
h = ((r - g) / d + 4) / 6;
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const hDeg = Math.round(h * 360 * 10) / 10;
|
|
28
|
+
const sPct = Math.round(s * 100 * 10) / 10;
|
|
29
|
+
const lPct = Math.round(l * 100 * 10) / 10;
|
|
30
|
+
return `${hDeg} ${sPct}% ${lPct}%`;
|
|
31
|
+
}
|
|
32
|
+
function getForegroundForBackground(hex) {
|
|
33
|
+
const clean = hex.replace("#", "");
|
|
34
|
+
const r = parseInt(clean.slice(0, 2), 16) / 255;
|
|
35
|
+
const g = parseInt(clean.slice(2, 4), 16) / 255;
|
|
36
|
+
const b = parseInt(clean.slice(4, 6), 16) / 255;
|
|
37
|
+
const toLinear = (c) => c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;
|
|
38
|
+
const L = 0.2126 * toLinear(r) + 0.7152 * toLinear(g) + 0.0722 * toLinear(b);
|
|
39
|
+
const whiteContrast = 1.05 / (L + 0.05);
|
|
40
|
+
const darkContrast = (L + 0.05) / 0.05;
|
|
41
|
+
return whiteContrast >= darkContrast ? "0 0% 100%" : "222.2 47.4% 11.2%";
|
|
42
|
+
}
|
|
43
|
+
function isValidHex(value) {
|
|
44
|
+
return /^#[0-9a-fA-F]{6}$/.test(value);
|
|
45
|
+
}
|
|
46
|
+
function getBrandingCss(branding) {
|
|
47
|
+
const colors = branding?.colors;
|
|
48
|
+
if (!colors || !colors.primary && !colors.accent) return null;
|
|
49
|
+
const rules = [];
|
|
50
|
+
if (colors.primary && isValidHex(colors.primary)) {
|
|
51
|
+
const hsl = hexToHslTriplet(colors.primary);
|
|
52
|
+
const fg = getForegroundForBackground(colors.primary);
|
|
53
|
+
rules.push(`--primary: ${hsl};`);
|
|
54
|
+
rules.push(`--primary-foreground: ${fg};`);
|
|
55
|
+
rules.push(`--ring: ${hsl};`);
|
|
56
|
+
rules.push(`--focus-ring: ${hsl};`);
|
|
57
|
+
rules.push(`--sidebar-ring: ${hsl};`);
|
|
58
|
+
rules.push(`--chart-1: ${hsl};`);
|
|
59
|
+
}
|
|
60
|
+
if (colors.accent && isValidHex(colors.accent)) {
|
|
61
|
+
const hsl = hexToHslTriplet(colors.accent);
|
|
62
|
+
const fg = getForegroundForBackground(colors.accent);
|
|
63
|
+
rules.push(`--accent: ${hsl};`);
|
|
64
|
+
rules.push(`--accent-foreground: ${fg};`);
|
|
65
|
+
rules.push(`--chart-2: ${hsl};`);
|
|
66
|
+
}
|
|
67
|
+
if (rules.length === 0) return null;
|
|
68
|
+
return `.adminapp, .adminapp.dark { ${rules.join(" ")} }`;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export {
|
|
72
|
+
hexToHslTriplet,
|
|
73
|
+
getForegroundForBackground,
|
|
74
|
+
isValidHex,
|
|
75
|
+
getBrandingCss
|
|
76
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// src/init/boot-apply.ts
|
|
2
|
+
var callerLabel = (caller) => caller ? `[Nextly:${caller}]` : "[Nextly]";
|
|
3
|
+
async function runBootTimeApplyIfDev(opts) {
|
|
4
|
+
if (process.env.NODE_ENV !== "development") return;
|
|
5
|
+
if (process.env.NEXTLY_DISABLE_BOOT_APPLY === "1") return;
|
|
6
|
+
const label = callerLabel(opts?.caller);
|
|
7
|
+
try {
|
|
8
|
+
const { reloadNextlyConfig } = await import("./reload-config-HWQ4G5MM.mjs");
|
|
9
|
+
await reloadNextlyConfig();
|
|
10
|
+
} catch (err) {
|
|
11
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
12
|
+
console.warn(
|
|
13
|
+
`${label} Boot-time schema apply failed: ${msg}. The dev server still works against the live DB schema, but code-first edits won't be applied until next restart, HMR fires, or you run \`nextly db:sync\`.`
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export {
|
|
19
|
+
runBootTimeApplyIfDev
|
|
20
|
+
};
|
|
File without changes
|