@solidxai/core 0.1.11-beta.0 → 0.1.11-beta.11
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/.claude/settings.local.json +2 -1
- package/CLAUDE.md +26 -0
- 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 +46 -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/controllers/service.controller.d.ts +1 -0
- package/dist/controllers/service.controller.d.ts.map +1 -1
- package/dist/controllers/service.controller.js +2 -2
- package/dist/controllers/service.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/environment.helper.d.ts +1 -0
- package/dist/helpers/environment.helper.d.ts.map +1 -1
- package/dist/helpers/environment.helper.js +4 -0
- package/dist/helpers/environment.helper.js.map +1 -1
- package/dist/helpers/field-crud-managers/IntFieldCrudManager.d.ts.map +1 -1
- package/dist/helpers/field-crud-managers/IntFieldCrudManager.js +4 -1
- package/dist/helpers/field-crud-managers/IntFieldCrudManager.js.map +1 -1
- package/dist/helpers/model-metadata-helper.service.d.ts +2 -1
- package/dist/helpers/model-metadata-helper.service.d.ts.map +1 -1
- package/dist/helpers/model-metadata-helper.service.js +9 -5
- 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/helpers/solid-registry.d.ts +2 -1
- package/dist/helpers/solid-registry.d.ts.map +1 -1
- package/dist/helpers/solid-registry.js.map +1 -1
- package/dist/helpers/typeorm-db-helper.d.ts +1 -0
- package/dist/helpers/typeorm-db-helper.d.ts.map +1 -1
- package/dist/helpers/typeorm-db-helper.js +12 -0
- package/dist/helpers/typeorm-db-helper.js.map +1 -1
- 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/interfaces.d.ts +1 -0
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/repository/scheduled-job.repository.d.ts +5 -2
- package/dist/repository/scheduled-job.repository.d.ts.map +1 -1
- package/dist/repository/scheduled-job.repository.js +66 -3
- package/dist/repository/scheduled-job.repository.js.map +1 -1
- package/dist/repository/security-rule.repository.d.ts +2 -2
- package/dist/repository/security-rule.repository.d.ts.map +1 -1
- package/dist/repository/security-rule.repository.js +6 -3
- package/dist/repository/security-rule.repository.js.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.d.ts +43 -2
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +1173 -232
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +128 -34
- package/dist/services/action-metadata.service.d.ts +7 -0
- package/dist/services/action-metadata.service.d.ts.map +1 -1
- package/dist/services/action-metadata.service.js +76 -3
- package/dist/services/action-metadata.service.js.map +1 -1
- package/dist/services/api-key.service.d.ts.map +1 -1
- package/dist/services/api-key.service.js.map +1 -1
- package/dist/services/authentication.service.d.ts +2 -0
- package/dist/services/authentication.service.d.ts.map +1 -1
- package/dist/services/authentication.service.js +32 -11
- package/dist/services/authentication.service.js.map +1 -1
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.d.ts.map +1 -1
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js +7 -5
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.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-helper.service.d.ts.map +1 -1
- package/dist/services/crud-helper.service.js +25 -12
- package/dist/services/crud-helper.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 +62 -2
- package/dist/services/datasource-introspection.service.d.ts.map +1 -1
- package/dist/services/datasource-introspection.service.js +654 -186
- 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/locale.service.d.ts +14 -0
- package/dist/services/locale.service.d.ts.map +1 -1
- package/dist/services/locale.service.js +83 -0
- package/dist/services/locale.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/menu-item-metadata.service.d.ts.map +1 -1
- package/dist/services/menu-item-metadata.service.js +1 -0
- package/dist/services/menu-item-metadata.service.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts +3 -0
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +78 -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 +28 -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/services/role-metadata.service.d.ts +5 -0
- package/dist/services/role-metadata.service.d.ts.map +1 -1
- package/dist/services/role-metadata.service.js +95 -33
- package/dist/services/role-metadata.service.js.map +1 -1
- package/dist/services/settings/default-settings-provider.service.d.ts +244 -0
- package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
- package/dist/services/settings/default-settings-provider.service.js +120 -0
- package/dist/services/settings/default-settings-provider.service.js.map +1 -1
- package/dist/services/solid-ts-morph.service.d.ts +6 -0
- package/dist/services/solid-ts-morph.service.d.ts.map +1 -1
- package/dist/services/solid-ts-morph.service.js +43 -0
- package/dist/services/solid-ts-morph.service.js.map +1 -1
- package/dist/services/view-metadata.service.d.ts +6 -0
- package/dist/services/view-metadata.service.d.ts.map +1 -1
- package/dist/services/view-metadata.service.js +70 -8
- package/dist/services/view-metadata.service.js.map +1 -1
- 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 +5 -1
- package/dist/subscribers/audit.subscriber.d.ts.map +1 -1
- package/dist/subscribers/audit.subscriber.js +76 -12
- package/dist/subscribers/audit.subscriber.js.map +1 -1
- package/dist/subscribers/computed-entity-field.subscriber.d.ts +9 -1
- package/dist/subscribers/computed-entity-field.subscriber.d.ts.map +1 -1
- package/dist/subscribers/computed-entity-field.subscriber.js +45 -11
- package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
- package/dist/subscribers/created-by-updated-by.subscriber.d.ts.map +1 -1
- package/dist/subscribers/created-by-updated-by.subscriber.js.map +1 -1
- package/dist/subscribers/field-metadata.subscriber.d.ts.map +1 -1
- package/dist/subscribers/field-metadata.subscriber.js.map +1 -1
- package/dist/subscribers/scheduled-job.subscriber.d.ts.map +1 -1
- package/dist/subscribers/scheduled-job.subscriber.js +3 -2
- package/dist/subscribers/scheduled-job.subscriber.js.map +1 -1
- package/dist/subscribers/security-rule.subscriber.d.ts.map +1 -1
- package/dist/subscribers/security-rule.subscriber.js +5 -3
- package/dist/subscribers/security-rule.subscriber.js.map +1 -1
- 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/controllers/service.controller.ts +3 -2
- 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/environment.helper.ts +11 -0
- package/src/helpers/field-crud-managers/IntFieldCrudManager.ts +4 -1
- package/src/helpers/model-metadata-helper.service.ts +8 -3
- package/src/helpers/nodemon-heartbeat.ts +59 -0
- package/src/helpers/solid-registry.ts +7 -1
- package/src/helpers/typeorm-db-helper.ts +15 -0
- package/src/index.ts +3 -2
- package/src/interfaces/datasource-introspection-provider.interface.ts +1 -0
- package/src/interfaces.ts +1 -0
- package/src/repository/scheduled-job.repository.ts +83 -4
- package/src/repository/security-rule.repository.ts +10 -4
- package/src/seeders/module-metadata-seeder.service.ts +1415 -264
- package/src/seeders/seed-data/solid-core-metadata.json +128 -34
- package/src/services/action-metadata.service.ts +87 -2
- package/src/services/api-key.service.ts +36 -36
- package/src/services/authentication.service.ts +46 -12
- package/src/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.ts +11 -5
- package/src/services/computed-fields/entity/concat-entity-computed-field-provider.service.ts +15 -1
- package/src/services/crud-helper.service.ts +25 -12
- 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 +811 -161
- package/src/services/import-transaction.service.ts +5 -0
- package/src/services/locale.service.ts +111 -3
- package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +2 -2
- package/src/services/menu-item-metadata.service.ts +2 -1
- package/src/services/model-metadata.service.ts +109 -1
- package/src/services/module-metadata.service.ts +36 -0
- package/src/services/removed-field-migration.service.ts +334 -0
- package/src/services/role-metadata.service.ts +112 -49
- package/src/services/settings/default-settings-provider.service.ts +120 -0
- package/src/services/solid-ts-morph.service.ts +61 -1
- package/src/services/view-metadata.service.ts +83 -9
- package/src/solid-core.module.ts +4 -0
- package/src/subscribers/audit.subscriber.ts +101 -18
- package/src/subscribers/computed-entity-field.subscriber.ts +81 -28
- package/src/subscribers/created-by-updated-by.subscriber.ts +3 -0
- package/src/subscribers/field-metadata.subscriber.ts +3 -0
- package/src/subscribers/scheduled-job.subscriber.ts +3 -2
- package/src/subscribers/security-rule.subscriber.ts +8 -3
- 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/entities/{legacy-common.entity.ts → legacy-common.entity-with-existing-id.entity.ts} +0 -0
|
@@ -1077,15 +1077,24 @@
|
|
|
1077
1077
|
{
|
|
1078
1078
|
"name": "type",
|
|
1079
1079
|
"displayName": "Type",
|
|
1080
|
-
"type": "
|
|
1080
|
+
"type": "selectionStatic",
|
|
1081
1081
|
"ormType": "varchar",
|
|
1082
|
+
"length": 256,
|
|
1082
1083
|
"required": true,
|
|
1083
1084
|
"unique": false,
|
|
1084
1085
|
"index": true,
|
|
1085
1086
|
"private": false,
|
|
1086
1087
|
"encrypt": false,
|
|
1087
1088
|
"columnName": "type",
|
|
1088
|
-
"isSystem": true
|
|
1089
|
+
"isSystem": true,
|
|
1090
|
+
"selectionValueType": "string",
|
|
1091
|
+
"selectionStaticValues": [
|
|
1092
|
+
"list:List",
|
|
1093
|
+
"form:Form",
|
|
1094
|
+
"tree:Tree",
|
|
1095
|
+
"kanban:Kanban",
|
|
1096
|
+
"card:Card"
|
|
1097
|
+
]
|
|
1089
1098
|
},
|
|
1090
1099
|
{
|
|
1091
1100
|
"name": "context",
|
|
@@ -1584,7 +1593,7 @@
|
|
|
1584
1593
|
"name": "roles",
|
|
1585
1594
|
"displayName": "Roles",
|
|
1586
1595
|
"type": "relation",
|
|
1587
|
-
"required":
|
|
1596
|
+
"required": false,
|
|
1588
1597
|
"unique": false,
|
|
1589
1598
|
"index": true,
|
|
1590
1599
|
"private": false,
|
|
@@ -5244,6 +5253,13 @@
|
|
|
5244
5253
|
}
|
|
5245
5254
|
]
|
|
5246
5255
|
},
|
|
5256
|
+
"locales": [
|
|
5257
|
+
{
|
|
5258
|
+
"locale": "en",
|
|
5259
|
+
"displayName": "English",
|
|
5260
|
+
"isDefault": true
|
|
5261
|
+
}
|
|
5262
|
+
],
|
|
5247
5263
|
"permissions": [
|
|
5248
5264
|
"mcp:invoke",
|
|
5249
5265
|
"agent:invoke",
|
|
@@ -8730,12 +8746,15 @@
|
|
|
8730
8746
|
48
|
|
8731
8747
|
],
|
|
8732
8748
|
"enableGlobalSearch": true,
|
|
8733
|
-
"create":
|
|
8734
|
-
"edit":
|
|
8749
|
+
"create": false,
|
|
8750
|
+
"edit": false,
|
|
8735
8751
|
"delete": true,
|
|
8752
|
+
"import": false,
|
|
8753
|
+
"export": false,
|
|
8736
8754
|
"allowedViews": [
|
|
8737
8755
|
"list",
|
|
8738
|
-
"card"
|
|
8756
|
+
"card",
|
|
8757
|
+
"tree"
|
|
8739
8758
|
]
|
|
8740
8759
|
},
|
|
8741
8760
|
"children": [
|
|
@@ -8996,7 +9015,13 @@
|
|
|
8996
9015
|
"enableGlobalSearch": true,
|
|
8997
9016
|
"create": false,
|
|
8998
9017
|
"edit": false,
|
|
8999
|
-
"delete": false
|
|
9018
|
+
"delete": false,
|
|
9019
|
+
"import": false,
|
|
9020
|
+
"export": false,
|
|
9021
|
+
"allowedViews": [
|
|
9022
|
+
"list",
|
|
9023
|
+
"tree"
|
|
9024
|
+
]
|
|
9000
9025
|
},
|
|
9001
9026
|
"children": [
|
|
9002
9027
|
{
|
|
@@ -10088,15 +10113,11 @@
|
|
|
10088
10113
|
"swimlanesCount": 5,
|
|
10089
10114
|
"recordsInSwimlane": 10,
|
|
10090
10115
|
"enableGlobalSearch": true,
|
|
10091
|
-
"create":
|
|
10092
|
-
"edit":
|
|
10093
|
-
"delete":
|
|
10116
|
+
"create": false,
|
|
10117
|
+
"edit": false,
|
|
10118
|
+
"delete": false,
|
|
10094
10119
|
"groupBy": "stage",
|
|
10095
|
-
"draggable": false
|
|
10096
|
-
"allowedViews": [
|
|
10097
|
-
"list",
|
|
10098
|
-
"kanban"
|
|
10099
|
-
]
|
|
10120
|
+
"draggable": false
|
|
10100
10121
|
},
|
|
10101
10122
|
"children": [
|
|
10102
10123
|
{
|
|
@@ -11922,7 +11943,11 @@
|
|
|
11922
11943
|
"edit": false,
|
|
11923
11944
|
"delete": false,
|
|
11924
11945
|
"import": false,
|
|
11925
|
-
"export": false
|
|
11946
|
+
"export": false,
|
|
11947
|
+
"allowedViews": [
|
|
11948
|
+
"list",
|
|
11949
|
+
"tree"
|
|
11950
|
+
]
|
|
11926
11951
|
},
|
|
11927
11952
|
"children": [
|
|
11928
11953
|
{
|
|
@@ -13417,7 +13442,13 @@
|
|
|
13417
13442
|
"enableGlobalSearch": true,
|
|
13418
13443
|
"create": false,
|
|
13419
13444
|
"edit": true,
|
|
13420
|
-
"delete": false
|
|
13445
|
+
"delete": false,
|
|
13446
|
+
"import": false,
|
|
13447
|
+
"export": false,
|
|
13448
|
+
"allowedViews": [
|
|
13449
|
+
"list",
|
|
13450
|
+
"tree"
|
|
13451
|
+
]
|
|
13421
13452
|
},
|
|
13422
13453
|
"children": [
|
|
13423
13454
|
{
|
|
@@ -13492,7 +13523,13 @@
|
|
|
13492
13523
|
"enableGlobalSearch": true,
|
|
13493
13524
|
"create": false,
|
|
13494
13525
|
"edit": false,
|
|
13495
|
-
"delete": false
|
|
13526
|
+
"delete": false,
|
|
13527
|
+
"import": false,
|
|
13528
|
+
"export": false,
|
|
13529
|
+
"allowedViews": [
|
|
13530
|
+
"list",
|
|
13531
|
+
"tree"
|
|
13532
|
+
]
|
|
13496
13533
|
},
|
|
13497
13534
|
"children": [
|
|
13498
13535
|
{
|
|
@@ -13576,7 +13613,13 @@
|
|
|
13576
13613
|
"enableGlobalSearch": true,
|
|
13577
13614
|
"create": false,
|
|
13578
13615
|
"edit": false,
|
|
13579
|
-
"delete": false
|
|
13616
|
+
"delete": false,
|
|
13617
|
+
"import": false,
|
|
13618
|
+
"export": false,
|
|
13619
|
+
"allowedViews": [
|
|
13620
|
+
"list",
|
|
13621
|
+
"tree"
|
|
13622
|
+
]
|
|
13580
13623
|
},
|
|
13581
13624
|
"children": [
|
|
13582
13625
|
{
|
|
@@ -13638,7 +13681,13 @@
|
|
|
13638
13681
|
"enableGlobalSearch": true,
|
|
13639
13682
|
"create": false,
|
|
13640
13683
|
"edit": false,
|
|
13641
|
-
"delete": false
|
|
13684
|
+
"delete": false,
|
|
13685
|
+
"import": false,
|
|
13686
|
+
"export": false,
|
|
13687
|
+
"allowedViews": [
|
|
13688
|
+
"list",
|
|
13689
|
+
"tree"
|
|
13690
|
+
]
|
|
13642
13691
|
},
|
|
13643
13692
|
"children": [
|
|
13644
13693
|
{
|
|
@@ -13707,7 +13756,13 @@
|
|
|
13707
13756
|
"enableGlobalSearch": true,
|
|
13708
13757
|
"create": false,
|
|
13709
13758
|
"edit": false,
|
|
13710
|
-
"delete":
|
|
13759
|
+
"delete": true,
|
|
13760
|
+
"import": false,
|
|
13761
|
+
"export": false,
|
|
13762
|
+
"allowedViews": [
|
|
13763
|
+
"list",
|
|
13764
|
+
"tree"
|
|
13765
|
+
]
|
|
13711
13766
|
},
|
|
13712
13767
|
"children": [
|
|
13713
13768
|
{
|
|
@@ -13777,7 +13832,14 @@
|
|
|
13777
13832
|
"enableGlobalSearch": true,
|
|
13778
13833
|
"create": false,
|
|
13779
13834
|
"edit": false,
|
|
13780
|
-
"delete":
|
|
13835
|
+
"delete": true,
|
|
13836
|
+
"import": false,
|
|
13837
|
+
"export": false,
|
|
13838
|
+
"allowedViews": [
|
|
13839
|
+
"list",
|
|
13840
|
+
"card",
|
|
13841
|
+
"tree"
|
|
13842
|
+
]
|
|
13781
13843
|
},
|
|
13782
13844
|
"children": [
|
|
13783
13845
|
{
|
|
@@ -13843,11 +13905,14 @@
|
|
|
13843
13905
|
50
|
|
13844
13906
|
],
|
|
13845
13907
|
"enableGlobalSearch": true,
|
|
13846
|
-
"create":
|
|
13847
|
-
"edit":
|
|
13848
|
-
"delete":
|
|
13849
|
-
"import":
|
|
13850
|
-
"export":
|
|
13908
|
+
"create": true,
|
|
13909
|
+
"edit": true,
|
|
13910
|
+
"delete": true,
|
|
13911
|
+
"import": true,
|
|
13912
|
+
"export": true,
|
|
13913
|
+
"allowedViews": [
|
|
13914
|
+
"list"
|
|
13915
|
+
]
|
|
13851
13916
|
},
|
|
13852
13917
|
"children": [
|
|
13853
13918
|
{
|
|
@@ -13882,7 +13947,11 @@
|
|
|
13882
13947
|
"edit": false,
|
|
13883
13948
|
"delete": false,
|
|
13884
13949
|
"import": false,
|
|
13885
|
-
"export": false
|
|
13950
|
+
"export": false,
|
|
13951
|
+
"allowedViews": [
|
|
13952
|
+
"list",
|
|
13953
|
+
"tree"
|
|
13954
|
+
]
|
|
13886
13955
|
},
|
|
13887
13956
|
"children": [
|
|
13888
13957
|
{
|
|
@@ -13944,7 +14013,11 @@
|
|
|
13944
14013
|
"edit": false,
|
|
13945
14014
|
"delete": false,
|
|
13946
14015
|
"import": false,
|
|
13947
|
-
"export": false
|
|
14016
|
+
"export": false,
|
|
14017
|
+
"allowedViews": [
|
|
14018
|
+
"list",
|
|
14019
|
+
"tree"
|
|
14020
|
+
]
|
|
13948
14021
|
},
|
|
13949
14022
|
"children": [
|
|
13950
14023
|
{
|
|
@@ -14013,7 +14086,11 @@
|
|
|
14013
14086
|
"edit": true,
|
|
14014
14087
|
"delete": true,
|
|
14015
14088
|
"import": true,
|
|
14016
|
-
"export": true
|
|
14089
|
+
"export": true,
|
|
14090
|
+
"allowedViews": [
|
|
14091
|
+
"list",
|
|
14092
|
+
"tree"
|
|
14093
|
+
]
|
|
14017
14094
|
},
|
|
14018
14095
|
"children": [
|
|
14019
14096
|
{
|
|
@@ -14073,7 +14150,11 @@
|
|
|
14073
14150
|
"edit": false,
|
|
14074
14151
|
"delete": false,
|
|
14075
14152
|
"import": false,
|
|
14076
|
-
"export": false
|
|
14153
|
+
"export": false,
|
|
14154
|
+
"allowedViews": [
|
|
14155
|
+
"list",
|
|
14156
|
+
"tree"
|
|
14157
|
+
]
|
|
14077
14158
|
},
|
|
14078
14159
|
"children": [
|
|
14079
14160
|
{
|
|
@@ -14133,7 +14214,11 @@
|
|
|
14133
14214
|
"edit": false,
|
|
14134
14215
|
"delete": false,
|
|
14135
14216
|
"import": false,
|
|
14136
|
-
"export": false
|
|
14217
|
+
"export": false,
|
|
14218
|
+
"allowedViews": [
|
|
14219
|
+
"list",
|
|
14220
|
+
"tree"
|
|
14221
|
+
]
|
|
14137
14222
|
},
|
|
14138
14223
|
"children": [
|
|
14139
14224
|
{
|
|
@@ -14203,7 +14288,11 @@
|
|
|
14203
14288
|
"edit": false,
|
|
14204
14289
|
"delete": false,
|
|
14205
14290
|
"import": false,
|
|
14206
|
-
"export": false
|
|
14291
|
+
"export": false,
|
|
14292
|
+
"allowedViews": [
|
|
14293
|
+
"list",
|
|
14294
|
+
"tree"
|
|
14295
|
+
]
|
|
14207
14296
|
},
|
|
14208
14297
|
"children": [
|
|
14209
14298
|
{
|
|
@@ -14272,7 +14361,12 @@
|
|
|
14272
14361
|
"enableGlobalSearch": true,
|
|
14273
14362
|
"create": true,
|
|
14274
14363
|
"edit": true,
|
|
14275
|
-
"delete": true
|
|
14364
|
+
"delete": true,
|
|
14365
|
+
"import": true,
|
|
14366
|
+
"export": true,
|
|
14367
|
+
"allowedViews": [
|
|
14368
|
+
"list"
|
|
14369
|
+
]
|
|
14276
14370
|
},
|
|
14277
14371
|
"children": [
|
|
14278
14372
|
{
|
|
@@ -7,6 +7,13 @@ export declare class ActionMetadataService extends CRUDService<ActionMetadata> {
|
|
|
7
7
|
readonly entityManager: EntityManager;
|
|
8
8
|
readonly repo: ActionMetadataRepository;
|
|
9
9
|
readonly moduleRef: ModuleRef;
|
|
10
|
+
private readonly logger;
|
|
11
|
+
private readonly comparableFields;
|
|
12
|
+
private readonly relationCompareFields;
|
|
13
|
+
private readonly jsonCompareFields;
|
|
14
|
+
private normalizeJsonFieldValue;
|
|
15
|
+
private getCanonicalJsonFieldString;
|
|
16
|
+
private hasChanges;
|
|
10
17
|
constructor(entityManager: EntityManager, repo: ActionMetadataRepository, moduleRef: ModuleRef);
|
|
11
18
|
findOneByUserKey(name: string, relations?: {}): Promise<ActionMetadata>;
|
|
12
19
|
upsert(updateSolidActionDto: any): Promise<any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-metadata.service.d.ts","sourceRoot":"","sources":["../../src/services/action-metadata.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE,qBACa,qBAAsB,SAAQ,WAAW,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"action-metadata.service.d.ts","sourceRoot":"","sources":["../../src/services/action-metadata.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE,qBACa,qBAAsB,SAAQ,WAAW,CAAC,cAAc,CAAC;IA4ElE,QAAQ,CAAC,aAAa,EAAE,aAAa;IAGrC,QAAQ,CAAC,IAAI,EAAE,wBAAwB;IACvC,QAAQ,CAAC,SAAS,EAAE,SAAS;IA/E/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;IACjE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAYtB;IACX,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAwC;IAC9E,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;IAEpE,OAAO,CAAC,uBAAuB;IAgC/B,OAAO,CAAC,2BAA2B;IAInC,OAAO,CAAC,UAAU;gBAsBP,aAAa,EAAE,aAAa,EAG5B,IAAI,EAAE,wBAAwB,EAC9B,SAAS,EAAE,SAAS;IAMzB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,KAAK;IAU7C,MAAM,CAAC,oBAAoB,EAAE,GAAG;CAgCvC"}
|
|
@@ -11,6 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
|
+
var ActionMetadataService_1;
|
|
14
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
16
|
exports.ActionMetadataService = void 0;
|
|
16
17
|
const common_1 = require("@nestjs/common");
|
|
@@ -19,12 +20,74 @@ const typeorm_1 = require("@nestjs/typeorm");
|
|
|
19
20
|
const crud_service_1 = require("./crud.service");
|
|
20
21
|
const typeorm_2 = require("typeorm");
|
|
21
22
|
const action_metadata_repository_1 = require("../repository/action-metadata.repository");
|
|
22
|
-
let ActionMetadataService = class ActionMetadataService extends crud_service_1.CRUDService {
|
|
23
|
+
let ActionMetadataService = ActionMetadataService_1 = class ActionMetadataService extends crud_service_1.CRUDService {
|
|
24
|
+
normalizeJsonFieldValue(value) {
|
|
25
|
+
if (typeof value === 'string') {
|
|
26
|
+
const trimmedValue = value.trim();
|
|
27
|
+
if ((trimmedValue.startsWith('{') && trimmedValue.endsWith('}')) ||
|
|
28
|
+
(trimmedValue.startsWith('[') && trimmedValue.endsWith(']'))) {
|
|
29
|
+
try {
|
|
30
|
+
return this.normalizeJsonFieldValue(JSON.parse(trimmedValue));
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
if (Array.isArray(value)) {
|
|
39
|
+
return value.map((item) => this.normalizeJsonFieldValue(item));
|
|
40
|
+
}
|
|
41
|
+
if (value && typeof value === 'object') {
|
|
42
|
+
return Object.keys(value)
|
|
43
|
+
.sort()
|
|
44
|
+
.reduce((result, key) => {
|
|
45
|
+
result[key] = this.normalizeJsonFieldValue(value[key]);
|
|
46
|
+
return result;
|
|
47
|
+
}, {});
|
|
48
|
+
}
|
|
49
|
+
return value;
|
|
50
|
+
}
|
|
51
|
+
getCanonicalJsonFieldString(value) {
|
|
52
|
+
return JSON.stringify(this.normalizeJsonFieldValue(value) ?? null);
|
|
53
|
+
}
|
|
54
|
+
hasChanges(existingSolidAction, updateSolidActionDto) {
|
|
55
|
+
return this.comparableFields.some((key) => {
|
|
56
|
+
const value = updateSolidActionDto[key];
|
|
57
|
+
if (typeof value === 'undefined') {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
if (this.relationCompareFields.has(key)) {
|
|
61
|
+
const relationValue = value;
|
|
62
|
+
return existingSolidAction[key]?.id !== relationValue?.id;
|
|
63
|
+
}
|
|
64
|
+
if (this.jsonCompareFields.has(key)) {
|
|
65
|
+
return this.getCanonicalJsonFieldString(existingSolidAction[key]) !== this.getCanonicalJsonFieldString(value);
|
|
66
|
+
}
|
|
67
|
+
return existingSolidAction[key] !== value;
|
|
68
|
+
});
|
|
69
|
+
}
|
|
23
70
|
constructor(entityManager, repo, moduleRef) {
|
|
24
71
|
super(entityManager, repo, 'actionMetadata', 'solid-core', moduleRef);
|
|
25
72
|
this.entityManager = entityManager;
|
|
26
73
|
this.repo = repo;
|
|
27
74
|
this.moduleRef = moduleRef;
|
|
75
|
+
this.logger = new common_1.Logger(ActionMetadataService_1.name);
|
|
76
|
+
this.comparableFields = [
|
|
77
|
+
'name',
|
|
78
|
+
'displayName',
|
|
79
|
+
'type',
|
|
80
|
+
'domain',
|
|
81
|
+
'context',
|
|
82
|
+
'customComponent',
|
|
83
|
+
'customIsModal',
|
|
84
|
+
'serverEndpoint',
|
|
85
|
+
'module',
|
|
86
|
+
'model',
|
|
87
|
+
'view',
|
|
88
|
+
];
|
|
89
|
+
this.relationCompareFields = new Set(['module', 'model', 'view']);
|
|
90
|
+
this.jsonCompareFields = new Set(['domain', 'context']);
|
|
28
91
|
}
|
|
29
92
|
async findOneByUserKey(name, relations = {}) {
|
|
30
93
|
const entity = await this.repo.findOne({
|
|
@@ -39,9 +102,19 @@ let ActionMetadataService = class ActionMetadataService extends crud_service_1.C
|
|
|
39
102
|
const existingSolidAction = await this.repo.findOne({
|
|
40
103
|
where: {
|
|
41
104
|
name: updateSolidActionDto.name
|
|
42
|
-
}
|
|
105
|
+
},
|
|
106
|
+
relations: {
|
|
107
|
+
module: true,
|
|
108
|
+
model: true,
|
|
109
|
+
view: true,
|
|
110
|
+
},
|
|
43
111
|
});
|
|
44
112
|
if (existingSolidAction) {
|
|
113
|
+
const hasChanges = this.hasChanges(existingSolidAction, updateSolidActionDto);
|
|
114
|
+
if (!hasChanges) {
|
|
115
|
+
this.logger.debug(`Skipping action upsert for ${updateSolidActionDto.name}; no changes detected.`);
|
|
116
|
+
return existingSolidAction;
|
|
117
|
+
}
|
|
45
118
|
const updatedSolidActionDto = { ...existingSolidAction, ...updateSolidActionDto };
|
|
46
119
|
return this.repo.save(updatedSolidActionDto);
|
|
47
120
|
}
|
|
@@ -52,7 +125,7 @@ let ActionMetadataService = class ActionMetadataService extends crud_service_1.C
|
|
|
52
125
|
}
|
|
53
126
|
};
|
|
54
127
|
exports.ActionMetadataService = ActionMetadataService;
|
|
55
|
-
exports.ActionMetadataService = ActionMetadataService = __decorate([
|
|
128
|
+
exports.ActionMetadataService = ActionMetadataService = ActionMetadataService_1 = __decorate([
|
|
56
129
|
(0, common_1.Injectable)(),
|
|
57
130
|
__param(0, (0, typeorm_1.InjectEntityManager)()),
|
|
58
131
|
__metadata("design:paramtypes", [typeorm_2.EntityManager,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-metadata.service.js","sourceRoot":"","sources":["../../src/services/action-metadata.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"action-metadata.service.js","sourceRoot":"","sources":["../../src/services/action-metadata.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable, Logger } from '@nestjs/common';\nimport { ModuleRef } from \"@nestjs/core\";\nimport { InjectEntityManager } from '@nestjs/typeorm';\nimport { CRUDService } from 'src/services/crud.service';\nimport { EntityManager } from 'typeorm';\n\n\nimport { ActionMetadataRepository } from 'src/repository/action-metadata.repository';\nimport { ActionMetadata } from '../entities/action-metadata.entity';\n\n@Injectable()\nexport class ActionMetadataService extends CRUDService<ActionMetadata> {\n private readonly logger = new Logger(ActionMetadataService.name);\n private readonly comparableFields = [\n 'name',\n 'displayName',\n 'type',\n 'domain',\n 'context',\n 'customComponent',\n 'customIsModal',\n 'serverEndpoint',\n 'module',\n 'model',\n 'view',\n ] as const;\n private readonly relationCompareFields = new Set(['module', 'model', 'view']);\n private readonly jsonCompareFields = new Set(['domain', 'context']);\n\n private normalizeJsonFieldValue(value: any): any {\n if (typeof value === 'string') {\n const trimmedValue = value.trim();\n if (\n (trimmedValue.startsWith('{') && trimmedValue.endsWith('}')) ||\n (trimmedValue.startsWith('[') && trimmedValue.endsWith(']'))\n ) {\n try {\n return this.normalizeJsonFieldValue(JSON.parse(trimmedValue));\n } catch {\n return value;\n }\n }\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => this.normalizeJsonFieldValue(item));\n }\n\n if (value && typeof value === 'object') {\n return Object.keys(value)\n .sort()\n .reduce((result, key) => {\n result[key] = this.normalizeJsonFieldValue(value[key]);\n return result;\n }, {} as Record<string, any>);\n }\n\n return value;\n }\n\n private getCanonicalJsonFieldString(value: any): string {\n return JSON.stringify(this.normalizeJsonFieldValue(value) ?? null);\n }\n\n private hasChanges(existingSolidAction: ActionMetadata, updateSolidActionDto: any): boolean {\n return this.comparableFields.some((key) => {\n const value = updateSolidActionDto[key];\n if (typeof value === 'undefined') {\n return false;\n }\n\n if (this.relationCompareFields.has(key)) {\n const relationValue = value as any;\n return (existingSolidAction as any)[key]?.id !== relationValue?.id;\n }\n\n if (this.jsonCompareFields.has(key)) {\n return this.getCanonicalJsonFieldString((existingSolidAction as any)[key]) !== this.getCanonicalJsonFieldString(value);\n }\n\n return (existingSolidAction as any)[key] !== value;\n });\n }\n\n constructor(\n @InjectEntityManager()\n readonly entityManager: EntityManager,\n // @InjectRepository(ActionMetadata, 'default')\n // readonly repo: Repository<ActionMetadata>,\n readonly repo: ActionMetadataRepository,\n readonly moduleRef: ModuleRef\n\n ) {\n super(entityManager, repo, 'actionMetadata', 'solid-core', moduleRef);\n }\n\n async findOneByUserKey(name: string, relations = {}) {\n const entity = await this.repo.findOne({\n where: {\n name: name,\n },\n relations: relations,\n });\n return entity;\n }\n\n async upsert(updateSolidActionDto: any) {\n // First check if module already exists using name\n const existingSolidAction = await this.repo.findOne({\n where: {\n name: updateSolidActionDto.name\n },\n relations: {\n module: true,\n model: true,\n view: true,\n },\n })\n\n // if found\n if (existingSolidAction) {\n const hasChanges = this.hasChanges(existingSolidAction, updateSolidActionDto);\n\n if (!hasChanges) {\n this.logger.debug(`Skipping action upsert for ${updateSolidActionDto.name}; no changes detected.`);\n return existingSolidAction;\n }\n\n const updatedSolidActionDto = { ...existingSolidAction, ...updateSolidActionDto };\n return this.repo.save(updatedSolidActionDto);\n }\n // if not found - create new \n else {\n const moduleMetadata = this.repo.create(updateSolidActionDto);\n return this.repo.save(moduleMetadata);\n }\n }\n\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-key.service.d.ts","sourceRoot":"","sources":["../../src/services/api-key.service.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,qBACa,aAAa;IAIlB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc;IANnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;gBAGpC,gBAAgB,EAAE,oBAAoB,EACtC,yBAAyB,EAAE,yBAAyB,EACpD,qBAAqB,EAAE,qBAAqB,EAC5C,cAAc,EAAE,cAAc;IAG7C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"api-key.service.d.ts","sourceRoot":"","sources":["../../src/services/api-key.service.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,qBACa,aAAa;IAIlB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc;IANnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;gBAGpC,gBAAgB,EAAE,oBAAoB,EACtC,yBAAyB,EAAE,yBAAyB,EACpD,qBAAqB,EAAE,qBAAqB,EAC5C,cAAc,EAAE,cAAc;IAG7C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,CAAC;IA+B/F,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAkCjD,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB1E,QAAQ,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;IAoC7B,OAAO,CAAC,IAAI;CAGf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-key.service.js","sourceRoot":"","sources":["../../src/services/api-key.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAMwB;AACxB,mCAAiD;AACjD,gEAA8D;AAG9D,yEAA8D;AAC9D,yDAAgD;AAEhD,mFAA8E;AAC9E,+EAAqF;AACrF,qEAAiE;AACjE,mEAAgE;AAGzD,IAAM,aAAa,qBAAnB,MAAM,aAAa;IAGtB,YACqB,gBAAsC,EACtC,yBAAoD,EACpD,qBAA4C,EAC5C,cAA8B;QAH9B,qBAAgB,GAAhB,gBAAgB,CAAsB;QACtC,8BAAyB,GAAzB,yBAAyB,CAA2B;QACpD,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,mBAAc,GAAd,cAAc,CAAgB;QANlC,WAAM,GAAG,IAAI,eAAM,CAAC,eAAa,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"api-key.service.js","sourceRoot":"","sources":["../../src/services/api-key.service.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ForbiddenException,\n Injectable,\n Logger,\n NotFoundException,\n UnauthorizedException,\n} from '@nestjs/common';\nimport { createHash, randomBytes } from 'crypto';\nimport { ERROR_MESSAGES } from 'src/constants/error-messages';\nimport { CreateApiKeyDto } from 'src/dtos/create-api-key.dto';\nimport { UpdateApiKeyDto } from 'src/dtos/update-api-key.dto';\nimport { UserApiKey } from 'src/entities/user-api-key.entity';\nimport { User } from 'src/entities/user.entity';\nimport { ActiveUserData } from 'src/interfaces/active-user-data.interface';\nimport { UserApiKeyRepository } from 'src/repository/user-api-key.repository';\nimport { PermissionMetadataService } from 'src/services/permission-metadata.service';\nimport { AuthenticationService } from './authentication.service';\nimport { UserRepository } from 'src/repository/user.repository';\n\n@Injectable()\nexport class ApiKeyService {\n private readonly logger = new Logger(ApiKeyService.name);\n\n constructor(\n private readonly apiKeyRepository: UserApiKeyRepository,\n private readonly permissionMetadataService: PermissionMetadataService,\n private readonly authenticationService: AuthenticationService,\n private readonly userRepository: UserRepository,\n ) { }\n\n async generate(userId: number, dto: CreateApiKeyDto): Promise<{ apiKey: string; record: UserApiKey }> {\n const user = await this.apiKeyRepository.manager.findOne(User, {\n where: { id: userId },\n select: ['id', 'isAllowedToGenerateApiKeys'],\n });\n\n if (!user?.isAllowedToGenerateApiKeys) {\n throw new ForbiddenException('You are not allowed to generate API keys');\n }\n\n const rawKey = 'sldx_' + randomBytes(32).toString('hex');\n const hashedKey = this.hash(rawKey);\n const maskedKey = 'sldx_****' + rawKey.slice(-4);\n\n const record = this.apiKeyRepository.create({\n name: dto.name,\n hashedKey,\n maskedKey,\n isActive: true,\n expiresAt: dto.expiresAt ? new Date(dto.expiresAt) : null,\n user,\n });\n\n await this.apiKeyRepository.save(record);\n\n // Strip hashedKey from the returned record — maskedKey is all the UI needs\n delete (record as any).hashedKey;\n\n return { apiKey: rawKey, record };\n }\n\n async validate(rawKey: string): Promise<ActiveUserData> {\n const hashedKey = this.hash(rawKey);\n\n // Bypass security rules for auth validation — must find the key regardless of caller context\n const keyRecord = await this.apiKeyRepository.findOne({\n where: { hashedKey, isActive: true },\n relations: ['user', 'user.roles'],\n });\n\n if (!keyRecord) {\n throw new UnauthorizedException();\n }\n\n if (keyRecord.expiresAt && keyRecord.expiresAt < new Date()) {\n throw new UnauthorizedException('API key expired');\n }\n\n // Fire-and-forget — does not need security rule context\n this.apiKeyRepository.update(keyRecord.id, { lastUsedAt: new Date() }).catch((err) => {\n this.logger.warn(`Failed to update lastUsedAt for key ${keyRecord.id}: ${err.message}`);\n });\n\n const roles = (keyRecord.user.roles ?? []).map((r) => r.name);\n const permissions = await this.permissionMetadataService.findAllUsingRoles(roles);\n\n return {\n sub: keyRecord.user.id,\n username: keyRecord.user.username,\n email: keyRecord.user.email,\n roles,\n permissions: permissions.map((p) => p.name),\n };\n }\n\n async updateKey(id: number, userId: number, dto: UpdateApiKeyDto): Promise<void> {\n const keyRecord = await this.apiKeyRepository.findOne({\n where: { id, user: { id: userId } },\n });\n\n if (!keyRecord) {\n throw new NotFoundException('API key not found');\n }\n\n await this.apiKeyRepository.manager\n .createQueryBuilder()\n .update(UserApiKey)\n .set({ isActive: dto.isActive })\n .where('id = :id', { id })\n .execute();\n }\n\n\n async apiKeyMe(apiKey: string) {\n\n const hasedKey = this.hash(apiKey);\n const apiKeyRecord = await this.apiKeyRepository.findOne({\n where: {\n hashedKey: hasedKey,\n },\n relations: {\n user: {\n roles: true\n }\n }\n });\n\n if (!apiKeyRecord) {\n throw new UnauthorizedException(ERROR_MESSAGES.INVALID_CREDENTIALS);\n }\n\n const user = apiKeyRecord.user;\n\n const tokens = await this.authenticationService.generateTokens(user);\n\n\n return {\n user: {\n email: user.email,\n mobile: user.mobile,\n username: user.username,\n forcePasswordChange: user.forcePasswordChange,\n id: user.id,\n roles: user.roles.map((role) => role.name)\n },\n ...tokens\n }\n }\n\n private hash(rawKey: string): string {\n return createHash('sha256').update(rawKey).digest('hex');\n }\n}\n"]}
|
|
@@ -112,8 +112,10 @@ export declare class AuthenticationService {
|
|
|
112
112
|
}>;
|
|
113
113
|
private resolveLoginType;
|
|
114
114
|
private findUserForLogin;
|
|
115
|
+
private findUserForLoginOrNull;
|
|
115
116
|
private assignLoginOtp;
|
|
116
117
|
private buildLoginOtpResponse;
|
|
118
|
+
private buildMaskedLoginIdentifier;
|
|
117
119
|
private notifyUserOnOtpInititateLogin;
|
|
118
120
|
otpConfirmLogin(confirmSignInDto: OTPConfirmOTPDto): Promise<{
|
|
119
121
|
accessToken: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authentication.service.d.ts","sourceRoot":"","sources":["../../src/services/authentication.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"authentication.service.d.ts","sourceRoot":"","sources":["../../src/services/authentication.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -635,13 +635,15 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
635
635
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.PASSWORDLESS_REGISTRATION_DISABLED);
|
|
636
636
|
}
|
|
637
637
|
const type = this.resolveLoginType(signInDto);
|
|
638
|
-
const user = await this.
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
638
|
+
const user = await this.findUserForLoginOrNull(type, signInDto.identifier);
|
|
639
|
+
if (user) {
|
|
640
|
+
const dummyOtp = this.getDummyOtpForUser(user);
|
|
641
|
+
if (!dummyOtp) {
|
|
642
|
+
await this.assignLoginOtp(user, type);
|
|
643
|
+
await this.notifyUserOnOtpInititateLogin(user, type);
|
|
644
|
+
}
|
|
643
645
|
}
|
|
644
|
-
return this.buildLoginOtpResponse(
|
|
646
|
+
return this.buildLoginOtpResponse(type, signInDto.identifier, user);
|
|
645
647
|
}
|
|
646
648
|
resolveLoginType(signInDto) {
|
|
647
649
|
const setting = this.settingService.getConfigValue("passwordlessLoginValidateWhat");
|
|
@@ -674,6 +676,19 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
674
676
|
}
|
|
675
677
|
return user;
|
|
676
678
|
}
|
|
679
|
+
async findUserForLoginOrNull(type, identifier, options = {}) {
|
|
680
|
+
try {
|
|
681
|
+
return await this.findUserForLogin(type, identifier, options);
|
|
682
|
+
}
|
|
683
|
+
catch (error) {
|
|
684
|
+
if (error instanceof common_1.UnauthorizedException &&
|
|
685
|
+
(error.message === error_messages_1.ERROR_MESSAGES.USER_NOT_FOUND ||
|
|
686
|
+
error.message === error_messages_1.ERROR_MESSAGES.USER_INACTIVE)) {
|
|
687
|
+
return null;
|
|
688
|
+
}
|
|
689
|
+
throw error;
|
|
690
|
+
}
|
|
691
|
+
}
|
|
677
692
|
async assignLoginOtp(user, type) {
|
|
678
693
|
const { token, expiresAt } = await this.otp();
|
|
679
694
|
if (type === constants_1.PasswordlessLoginValidateWhatSources.EMAIL) {
|
|
@@ -693,15 +708,18 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
693
708
|
});
|
|
694
709
|
}
|
|
695
710
|
}
|
|
696
|
-
buildLoginOtpResponse(
|
|
697
|
-
const maskedIdentifier = type
|
|
698
|
-
? { email: this.maskEmail(user.email) }
|
|
699
|
-
: { mobile: this.maskMobile(user.mobile) };
|
|
711
|
+
buildLoginOtpResponse(type, identifier, user) {
|
|
712
|
+
const maskedIdentifier = this.buildMaskedLoginIdentifier(type, user?.email ?? user?.mobile ?? identifier);
|
|
700
713
|
return {
|
|
701
714
|
message: success_messages_1.SUCCESS_MESSAGES.OTP_SENT_SUCCESS_LOGIN,
|
|
702
715
|
user: maskedIdentifier,
|
|
703
716
|
};
|
|
704
717
|
}
|
|
718
|
+
buildMaskedLoginIdentifier(type, identifier) {
|
|
719
|
+
return type === constants_1.PasswordlessLoginValidateWhatSources.EMAIL
|
|
720
|
+
? { email: this.maskEmail(identifier) }
|
|
721
|
+
: { mobile: this.maskMobile(identifier) };
|
|
722
|
+
}
|
|
705
723
|
async notifyUserOnOtpInititateLogin(user, loginType) {
|
|
706
724
|
const companyLogo = await this.getCompanyLogo();
|
|
707
725
|
const dummyOtp = this.getDummyOtpForUser(user);
|
|
@@ -778,9 +796,12 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
778
796
|
type !== constants_1.PasswordlessLoginValidateWhatSources.MOBILE) {
|
|
779
797
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.INVALID_VERIFICATION_TYPE);
|
|
780
798
|
}
|
|
781
|
-
const user = await this.
|
|
799
|
+
const user = await this.findUserForLoginOrNull(type, identifier, {
|
|
782
800
|
withRoles: true,
|
|
783
801
|
});
|
|
802
|
+
if (!user) {
|
|
803
|
+
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.INVALID_OTP);
|
|
804
|
+
}
|
|
784
805
|
this.checkAccountBlocked(user);
|
|
785
806
|
const dummyOtp = this.getDummyOtpForUser(user);
|
|
786
807
|
if (dummyOtp) {
|