@solidxai/core 0.1.11-beta.2 → 0.1.11-beta.5
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/commands/migrate-removed-fields.command.d.ts +19 -0
- package/dist/commands/migrate-removed-fields.command.d.ts.map +1 -0
- package/dist/commands/migrate-removed-fields.command.js +77 -0
- package/dist/commands/migrate-removed-fields.command.js.map +1 -0
- package/dist/controllers/datasource-introspection.controller.d.ts +38 -1
- package/dist/controllers/datasource-introspection.controller.d.ts.map +1 -1
- package/dist/controllers/datasource-introspection.controller.js +38 -0
- package/dist/controllers/datasource-introspection.controller.js.map +1 -1
- package/dist/dtos/datasource-introspection-mapping.dto.d.ts +5 -0
- package/dist/dtos/datasource-introspection-mapping.dto.d.ts.map +1 -1
- package/dist/dtos/datasource-introspection-mapping.dto.js +24 -2
- package/dist/dtos/datasource-introspection-mapping.dto.js.map +1 -1
- package/dist/entities/{legacy-common-with-id.entity.d.ts → legacy-common-with-generated-id.entity.d.ts} +2 -2
- package/dist/entities/legacy-common-with-generated-id.entity.d.ts.map +1 -0
- package/dist/entities/{legacy-common-with-id.entity.js → legacy-common-with-generated-id.entity.js} +4 -4
- package/dist/entities/legacy-common-with-generated-id.entity.js.map +1 -0
- package/dist/entities/{legacy-common.entity.d.ts → legacy-common.entity-with-existing-id.entity.d.ts} +1 -1
- package/dist/entities/legacy-common.entity-with-existing-id.entity.d.ts.map +1 -0
- package/dist/entities/{legacy-common.entity.js → legacy-common.entity-with-existing-id.entity.js} +1 -1
- package/dist/entities/legacy-common.entity-with-existing-id.entity.js.map +1 -0
- package/dist/helpers/command.service.d.ts +2 -0
- package/dist/helpers/command.service.d.ts.map +1 -1
- package/dist/helpers/command.service.js +6 -2
- package/dist/helpers/command.service.js.map +1 -1
- package/dist/helpers/model-metadata-helper.service.js +3 -3
- package/dist/helpers/model-metadata-helper.service.js.map +1 -1
- package/dist/helpers/nodemon-heartbeat.d.ts +5 -0
- package/dist/helpers/nodemon-heartbeat.d.ts.map +1 -0
- package/dist/helpers/nodemon-heartbeat.js +67 -0
- package/dist/helpers/nodemon-heartbeat.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/interfaces/datasource-introspection-provider.interface.d.ts +1 -0
- package/dist/interfaces/datasource-introspection-provider.interface.d.ts.map +1 -1
- package/dist/interfaces/datasource-introspection-provider.interface.js.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.d.ts +7 -1
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +101 -1
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +121 -34
- package/dist/services/api-key.service.d.ts.map +1 -1
- package/dist/services/api-key.service.js.map +1 -1
- package/dist/services/computed-fields/entity/concat-entity-computed-field-provider.service.d.ts +4 -0
- package/dist/services/computed-fields/entity/concat-entity-computed-field-provider.service.d.ts.map +1 -1
- package/dist/services/computed-fields/entity/concat-entity-computed-field-provider.service.js +18 -1
- package/dist/services/computed-fields/entity/concat-entity-computed-field-provider.service.js.map +1 -1
- package/dist/services/crud.service.d.ts +1 -0
- package/dist/services/crud.service.d.ts.map +1 -1
- package/dist/services/crud.service.js +27 -0
- package/dist/services/crud.service.js.map +1 -1
- package/dist/services/datasource-introspection/mssql-datasource-introspection-provider.service.d.ts.map +1 -1
- package/dist/services/datasource-introspection/mssql-datasource-introspection-provider.service.js +12 -0
- package/dist/services/datasource-introspection/mssql-datasource-introspection-provider.service.js.map +1 -1
- package/dist/services/datasource-introspection/mysql-datasource-introspection-provider.service.d.ts.map +1 -1
- package/dist/services/datasource-introspection/mysql-datasource-introspection-provider.service.js +2 -0
- package/dist/services/datasource-introspection/mysql-datasource-introspection-provider.service.js.map +1 -1
- package/dist/services/datasource-introspection/postgres-datasource-introspection-provider.service.d.ts.map +1 -1
- package/dist/services/datasource-introspection/postgres-datasource-introspection-provider.service.js +28 -15
- package/dist/services/datasource-introspection/postgres-datasource-introspection-provider.service.js.map +1 -1
- package/dist/services/datasource-introspection.service.d.ts +53 -2
- package/dist/services/datasource-introspection.service.d.ts.map +1 -1
- package/dist/services/datasource-introspection.service.js +559 -174
- package/dist/services/datasource-introspection.service.js.map +1 -1
- package/dist/services/import-transaction.service.d.ts.map +1 -1
- package/dist/services/import-transaction.service.js +3 -0
- package/dist/services/import-transaction.service.js.map +1 -1
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +10 -10
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts +1 -0
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +28 -0
- package/dist/services/model-metadata.service.js.map +1 -1
- package/dist/services/module-metadata.service.d.ts.map +1 -1
- package/dist/services/module-metadata.service.js +27 -0
- package/dist/services/module-metadata.service.js.map +1 -1
- package/dist/services/removed-field-migration.service.d.ts +30 -0
- package/dist/services/removed-field-migration.service.d.ts.map +1 -0
- package/dist/services/removed-field-migration.service.js +319 -0
- package/dist/services/removed-field-migration.service.js.map +1 -0
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +4 -0
- package/dist/solid-core.module.js.map +1 -1
- package/dist/subscribers/audit.subscriber.d.ts +4 -1
- package/dist/subscribers/audit.subscriber.d.ts.map +1 -1
- package/dist/subscribers/audit.subscriber.js +54 -6
- package/dist/subscribers/audit.subscriber.js.map +1 -1
- package/dist-tests/api/authenticate.spec.js +119 -0
- package/dist-tests/api/authenticate.spec.js.map +1 -0
- package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +97 -0
- package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +1 -0
- package/dist-tests/api/ping.spec.js +21 -0
- package/dist-tests/api/ping.spec.js.map +1 -0
- package/dist-tests/helpers/auth.js +41 -0
- package/dist-tests/helpers/auth.js.map +1 -0
- package/dist-tests/helpers/env.js +11 -0
- package/dist-tests/helpers/env.js.map +1 -0
- package/docs/agent-hub-grooming.md +301 -0
- package/docs/dashboards/AGENTIC_DASHBOARD_IMPLEMENTATION_PLAN.md +438 -0
- package/docs/dashboards/dashboard-curl-smoke-tests.txt +146 -0
- package/docs/dashboards/delete-legacy-dashboard-metadata.sql +172 -0
- package/docs/datasource-introspection-ddl-analysis.md +326 -0
- package/docs/datasource-introspection-implementation-plan.md +306 -0
- package/docs/grouping-enhancements.md +89 -0
- package/docs/java-spring/README.md +3 -0
- package/docs/java-spring/solid-core-module-deep-dive-report.md +1317 -0
- package/docs/module-package-import-handoff.md +691 -0
- package/docs/seed-changes.md +65 -0
- package/docs/test-data-workflow.md +200 -0
- package/docs/type-declaration-import-issue.md +24 -0
- package/package.json +1 -1
- package/src/commands/migrate-removed-fields.command.ts +81 -0
- package/src/controllers/datasource-introspection.controller.ts +27 -1
- package/src/dtos/datasource-introspection-mapping.dto.ts +15 -0
- package/src/entities/{legacy-common-with-id.entity.ts → legacy-common-with-generated-id.entity.ts} +1 -1
- package/src/helpers/command.service.ts +10 -2
- package/src/helpers/model-metadata-helper.service.ts +1 -1
- package/src/helpers/nodemon-heartbeat.ts +59 -0
- package/src/index.ts +3 -2
- package/src/interfaces/datasource-introspection-provider.interface.ts +1 -0
- package/src/seeders/module-metadata-seeder.service.ts +118 -0
- package/src/seeders/seed-data/solid-core-metadata.json +121 -34
- package/src/services/api-key.service.ts +36 -36
- package/src/services/computed-fields/entity/concat-entity-computed-field-provider.service.ts +15 -1
- package/src/services/crud.service.ts +36 -11
- package/src/services/datasource-introspection/mssql-datasource-introspection-provider.service.ts +12 -0
- package/src/services/datasource-introspection/mysql-datasource-introspection-provider.service.ts +2 -0
- package/src/services/datasource-introspection/postgres-datasource-introspection-provider.service.ts +28 -15
- package/src/services/datasource-introspection.service.ts +653 -150
- package/src/services/import-transaction.service.ts +5 -0
- package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +2 -2
- package/src/services/model-metadata.service.ts +45 -1
- package/src/services/module-metadata.service.ts +35 -0
- package/src/services/removed-field-migration.service.ts +334 -0
- package/src/solid-core.module.ts +4 -0
- package/src/subscribers/audit.subscriber.ts +70 -5
- package/.claude/settings.local.json +0 -15
- package/CLAUDE.md +0 -26
- package/dist/entities/legacy-common-with-id.entity.d.ts.map +0 -1
- package/dist/entities/legacy-common-with-id.entity.js.map +0 -1
- package/dist/entities/legacy-common.entity.d.ts.map +0 -1
- package/dist/entities/legacy-common.entity.js.map +0 -1
- package/src/services/1.js +0 -6
- /package/src/entities/{legacy-common.entity.ts → legacy-common.entity-with-existing-id.entity.ts} +0 -0
|
@@ -52,6 +52,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
52
52
|
exports.ModuleMetadataSeederService = void 0;
|
|
53
53
|
const common_1 = require("@nestjs/common");
|
|
54
54
|
const fs = __importStar(require("fs"));
|
|
55
|
+
const os = __importStar(require("os"));
|
|
55
56
|
const path = __importStar(require("path"));
|
|
56
57
|
const security_rule_repository_1 = require("../repository/security-rule.repository");
|
|
57
58
|
const authentication_service_1 = require("../services/authentication.service");
|
|
@@ -64,6 +65,7 @@ const typeorm_1 = require("typeorm");
|
|
|
64
65
|
const module_helper_1 = require("../helpers/module.helper");
|
|
65
66
|
const solid_registry_1 = require("../helpers/solid-registry");
|
|
66
67
|
const action_metadata_service_1 = require("../services/action-metadata.service");
|
|
68
|
+
const api_key_service_1 = require("../services/api-key.service");
|
|
67
69
|
const field_metadata_service_1 = require("../services/field-metadata.service");
|
|
68
70
|
const media_storage_provider_metadata_service_1 = require("../services/media-storage-provider-metadata.service");
|
|
69
71
|
const model_metadata_service_1 = require("../services/model-metadata.service");
|
|
@@ -76,6 +78,7 @@ const action_metadata_entity_1 = require("../entities/action-metadata.entity");
|
|
|
76
78
|
const menu_item_metadata_entity_1 = require("../entities/menu-item-metadata.entity");
|
|
77
79
|
const module_metadata_entity_1 = require("../entities/module-metadata.entity");
|
|
78
80
|
const role_metadata_entity_1 = require("../entities/role-metadata.entity");
|
|
81
|
+
const user_entity_1 = require("../entities/user.entity");
|
|
79
82
|
const create_menu_item_metadata_dto_1 = require("../dtos/create-menu-item-metadata.dto");
|
|
80
83
|
const create_user_dto_1 = require("../dtos/create-user.dto");
|
|
81
84
|
const create_role_metadata_dto_1 = require("../dtos/create-role-metadata.dto");
|
|
@@ -83,6 +86,7 @@ const permission_metadata_repository_1 = require("../repository/permission-metad
|
|
|
83
86
|
const saved_filters_repository_1 = require("../repository/saved-filters.repository");
|
|
84
87
|
const scheduled_job_repository_1 = require("../repository/scheduled-job.repository");
|
|
85
88
|
const setting_repository_1 = require("../repository/setting.repository");
|
|
89
|
+
const user_api_key_repository_1 = require("../repository/user-api-key.repository");
|
|
86
90
|
const model_sequence_repository_1 = require("../repository/model-sequence.repository");
|
|
87
91
|
const locale_repository_1 = require("../repository/locale.repository");
|
|
88
92
|
const model_sequence_entity_1 = require("../entities/model-sequence.entity");
|
|
@@ -95,7 +99,7 @@ const model_metadata_entity_1 = require("../entities/model-metadata.entity");
|
|
|
95
99
|
const permission_metadata_entity_1 = require("../entities/permission-metadata.entity");
|
|
96
100
|
const view_metadata_entity_1 = require("../entities/view-metadata.entity");
|
|
97
101
|
let ModuleMetadataSeederService = ModuleMetadataSeederService_1 = class ModuleMetadataSeederService {
|
|
98
|
-
constructor(moduleMetadataService, modelMetadataService, fieldMetadataService, mediaStorageProviderMetadataService, roleService, userService, authenticationService, solidActionService, solidViewService, emailTemplateService, smsTemplateService, listOfValuesService, permissionRepo, solidRegistry, settingService, settingsRepo, securityRuleRepo, systemFieldsSeederService, scheduledJobRepository, savedFiltersRepo, dataSource, modelSequenceRepo, localeRepo) {
|
|
102
|
+
constructor(moduleMetadataService, modelMetadataService, fieldMetadataService, mediaStorageProviderMetadataService, roleService, userService, authenticationService, apiKeyService, solidActionService, solidViewService, emailTemplateService, smsTemplateService, listOfValuesService, userApiKeyRepository, permissionRepo, solidRegistry, settingService, settingsRepo, securityRuleRepo, systemFieldsSeederService, scheduledJobRepository, savedFiltersRepo, dataSource, modelSequenceRepo, localeRepo) {
|
|
99
103
|
this.moduleMetadataService = moduleMetadataService;
|
|
100
104
|
this.modelMetadataService = modelMetadataService;
|
|
101
105
|
this.fieldMetadataService = fieldMetadataService;
|
|
@@ -103,11 +107,13 @@ let ModuleMetadataSeederService = ModuleMetadataSeederService_1 = class ModuleMe
|
|
|
103
107
|
this.roleService = roleService;
|
|
104
108
|
this.userService = userService;
|
|
105
109
|
this.authenticationService = authenticationService;
|
|
110
|
+
this.apiKeyService = apiKeyService;
|
|
106
111
|
this.solidActionService = solidActionService;
|
|
107
112
|
this.solidViewService = solidViewService;
|
|
108
113
|
this.emailTemplateService = emailTemplateService;
|
|
109
114
|
this.smsTemplateService = smsTemplateService;
|
|
110
115
|
this.listOfValuesService = listOfValuesService;
|
|
116
|
+
this.userApiKeyRepository = userApiKeyRepository;
|
|
111
117
|
this.permissionRepo = permissionRepo;
|
|
112
118
|
this.solidRegistry = solidRegistry;
|
|
113
119
|
this.settingService = settingService;
|
|
@@ -1075,6 +1081,7 @@ let ModuleMetadataSeederService = ModuleMetadataSeederService_1 = class ModuleMe
|
|
|
1075
1081
|
}
|
|
1076
1082
|
for (let l = 0; l < users.length; l++) {
|
|
1077
1083
|
const user = users[l];
|
|
1084
|
+
const isSystemAdminUser = user.username === 'sa';
|
|
1078
1085
|
let exisitingUser = await this.timeOperation('user-find-by-username', () => this.userService.findOneByUsername(user.username), {
|
|
1079
1086
|
component: 'users',
|
|
1080
1087
|
serviceCall: 'userService.findOneByUsername',
|
|
@@ -1084,14 +1091,105 @@ let ModuleMetadataSeederService = ModuleMetadataSeederService_1 = class ModuleMe
|
|
|
1084
1091
|
if (user.username === 'sa') {
|
|
1085
1092
|
user.password = create_user_dto_1.DEFAULT_SA_PASSWORD;
|
|
1086
1093
|
}
|
|
1094
|
+
if (isSystemAdminUser) {
|
|
1095
|
+
user.isAllowedToGenerateApiKeys = true;
|
|
1096
|
+
}
|
|
1087
1097
|
exisitingUser = await this.timeOperation('user-sign-up', () => this.authenticationService.signUp(user), {
|
|
1088
1098
|
component: 'users',
|
|
1089
1099
|
serviceCall: 'authenticationService.signUp',
|
|
1090
1100
|
details: `username=${user.username}`,
|
|
1091
1101
|
});
|
|
1102
|
+
if (isSystemAdminUser) {
|
|
1103
|
+
await this.timeOperation('seed-sa-api-key', async () => {
|
|
1104
|
+
const generatedApiKey = await this.apiKeyService.generate(exisitingUser.id, {
|
|
1105
|
+
name: 'Default SA API Key',
|
|
1106
|
+
});
|
|
1107
|
+
await this.writeSolidxAdminApiKeyConfig(generatedApiKey);
|
|
1108
|
+
}, {
|
|
1109
|
+
component: 'users',
|
|
1110
|
+
serviceCall: 'apiKeyService.generate',
|
|
1111
|
+
details: `username=${user.username}`,
|
|
1112
|
+
});
|
|
1113
|
+
}
|
|
1092
1114
|
this.logger.log(`Newly created user ${user.username}`);
|
|
1093
1115
|
}
|
|
1116
|
+
if (isSystemAdminUser) {
|
|
1117
|
+
await this.ensureSystemAdminApiKey(exisitingUser);
|
|
1118
|
+
}
|
|
1119
|
+
}
|
|
1120
|
+
}
|
|
1121
|
+
async ensureSystemAdminApiKey(existingUser) {
|
|
1122
|
+
if (!existingUser?.id) {
|
|
1123
|
+
return;
|
|
1124
|
+
}
|
|
1125
|
+
if (!existingUser.isAllowedToGenerateApiKeys) {
|
|
1126
|
+
await this.timeOperation('enable-sa-api-key-generation', () => this.userApiKeyRepository.manager.update(user_entity_1.User, { id: existingUser.id }, {
|
|
1127
|
+
isAllowedToGenerateApiKeys: true,
|
|
1128
|
+
}), {
|
|
1129
|
+
component: 'users',
|
|
1130
|
+
serviceCall: 'userRepository.update',
|
|
1131
|
+
details: `username=${existingUser.username}`,
|
|
1132
|
+
});
|
|
1133
|
+
existingUser.isAllowedToGenerateApiKeys = true;
|
|
1134
|
+
}
|
|
1135
|
+
const existingDefaultKey = await this.timeOperation('find-sa-default-api-key', () => this.userApiKeyRepository.findOne({
|
|
1136
|
+
where: {
|
|
1137
|
+
user: { id: existingUser.id },
|
|
1138
|
+
name: 'Default SA API Key',
|
|
1139
|
+
},
|
|
1140
|
+
relations: {
|
|
1141
|
+
user: true,
|
|
1142
|
+
},
|
|
1143
|
+
}), {
|
|
1144
|
+
component: 'users',
|
|
1145
|
+
serviceCall: 'userApiKeyRepository.findOne',
|
|
1146
|
+
details: `username=${existingUser.username}`,
|
|
1147
|
+
});
|
|
1148
|
+
if (existingDefaultKey) {
|
|
1149
|
+
return;
|
|
1150
|
+
}
|
|
1151
|
+
await this.timeOperation('seed-sa-api-key', async () => {
|
|
1152
|
+
const generatedApiKey = await this.apiKeyService.generate(existingUser.id, {
|
|
1153
|
+
name: 'Default SA API Key',
|
|
1154
|
+
});
|
|
1155
|
+
await this.writeSolidxAdminApiKeyConfig(generatedApiKey);
|
|
1156
|
+
}, {
|
|
1157
|
+
component: 'users',
|
|
1158
|
+
serviceCall: 'apiKeyService.generate',
|
|
1159
|
+
details: `username=${existingUser.username}`,
|
|
1160
|
+
});
|
|
1161
|
+
}
|
|
1162
|
+
async writeSolidxAdminApiKeyConfig(generatedApiKey) {
|
|
1163
|
+
const solidxDir = path.join(os.homedir(), '.solidx');
|
|
1164
|
+
const configPath = path.join(solidxDir, 'mcp.json');
|
|
1165
|
+
await fs.promises.mkdir(solidxDir, { recursive: true });
|
|
1166
|
+
let existingConfig = {};
|
|
1167
|
+
if (fs.existsSync(configPath)) {
|
|
1168
|
+
const rawConfig = await fs.promises.readFile(configPath, 'utf8');
|
|
1169
|
+
if (rawConfig.trim()) {
|
|
1170
|
+
const parsedConfig = JSON.parse(rawConfig);
|
|
1171
|
+
if (parsedConfig && typeof parsedConfig === 'object' && !Array.isArray(parsedConfig)) {
|
|
1172
|
+
existingConfig = parsedConfig;
|
|
1173
|
+
}
|
|
1174
|
+
else {
|
|
1175
|
+
this.logger.warn(`Expected ${configPath} to contain a JSON object. Overwriting with a new object.`);
|
|
1176
|
+
}
|
|
1177
|
+
}
|
|
1094
1178
|
}
|
|
1179
|
+
const nextConfig = {
|
|
1180
|
+
...existingConfig,
|
|
1181
|
+
solidxAdminApiKey: {
|
|
1182
|
+
id: generatedApiKey.record.id,
|
|
1183
|
+
name: generatedApiKey.record.name,
|
|
1184
|
+
apiKey: generatedApiKey.apiKey,
|
|
1185
|
+
maskedKey: generatedApiKey.record.maskedKey,
|
|
1186
|
+
isActive: generatedApiKey.record.isActive,
|
|
1187
|
+
expiresAt: generatedApiKey.record.expiresAt,
|
|
1188
|
+
createdAt: generatedApiKey.record.createdAt,
|
|
1189
|
+
updatedAt: generatedApiKey.record.updatedAt,
|
|
1190
|
+
},
|
|
1191
|
+
};
|
|
1192
|
+
await fs.promises.writeFile(configPath, `${JSON.stringify(nextConfig, null, 2)}\n`, 'utf8');
|
|
1095
1193
|
}
|
|
1096
1194
|
async seedModuleModelFields(moduleMetadata) {
|
|
1097
1195
|
const fieldMetadataRepo = this.dataSource.getRepository(field_metadata_entity_1.FieldMetadata);
|
|
@@ -2079,11 +2177,13 @@ exports.ModuleMetadataSeederService = ModuleMetadataSeederService = ModuleMetada
|
|
|
2079
2177
|
role_metadata_service_1.RoleMetadataService,
|
|
2080
2178
|
user_service_1.UserService,
|
|
2081
2179
|
authentication_service_1.AuthenticationService,
|
|
2180
|
+
api_key_service_1.ApiKeyService,
|
|
2082
2181
|
action_metadata_service_1.ActionMetadataService,
|
|
2083
2182
|
view_metadata_service_1.ViewMetadataService,
|
|
2084
2183
|
email_template_service_1.EmailTemplateService,
|
|
2085
2184
|
sms_template_service_1.SmsTemplateService,
|
|
2086
2185
|
list_of_values_service_1.ListOfValuesService,
|
|
2186
|
+
user_api_key_repository_1.UserApiKeyRepository,
|
|
2087
2187
|
permission_metadata_repository_1.PermissionMetadataRepository,
|
|
2088
2188
|
solid_registry_1.SolidRegistry,
|
|
2089
2189
|
setting_service_1.SettingService,
|