@solidxai/core 0.1.13-beta.15 → 0.1.13-beta.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,581 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.1.13-beta.16] - 2026-08-10
4
+
5
+ ### Added
6
+
7
+ - add security header options for iframe embedding and customize frame-ancestors
8
+ - add createdAt field to PostChatterMessageDto and set default in service
9
+ - implement transaction handling for unpublishing records and restore previous version
10
+ - add progress reporting functionality to test runner and reporters
11
+ - add viewWidget attribute for fileSize in metadata
12
+ - add configurable UI timeouts for testing steps and update documentation
13
+ - enhance internationalisation by adding applyCreateDefaults method for localeName on create DTOs
14
+ - implement promoteRecoveredDraftPublishVersion method and integrate with CRUDService for soft-deleted records
15
+ - add default locale name for internationalised entries in test data seeding
16
+ - implement draft/publish versioning support and refactor related services
17
+ - add DraftPublishHelperService for managing draft and publish workflows
18
+ - add workflow field data provider support and related interfaces
19
+ - add asynchronous execution for workflows and enhance execution status retrieval
20
+ - implement WorkflowSecret management with CRUD operations and integrate into workflow execution
21
+ - enhance workflow definition management and add Python runtime node
22
+ - add SolidX integration nodes for login, email, and SMS
23
+ - add support for versioning and publishing in CRUD operations, including new fields in entities and filters
24
+ - enhance http.request node with query parameters and body modes
25
+ - refactor node structure and add sequential and switch nodes
26
+ - update workflow execution and definition handling
27
+ - implement workflow execution services and nodes
28
+ - implement API key generation for system admin users in ModuleMetadataSeederService
29
+ - enhance ModuleMetadataSeederService to generate and store API keys for system admin users
30
+ - add fieldConfig property to DatasourceIntrospectionMappingColumnDto and enhance field sanitization in DatasourceIntrospectionService
31
+ - enhance migration process with build and seed commands
32
+ - enhance datasource introspection with primary key detection and migration support
33
+ - enhance role creation with module linkage and resolve module metadata
34
+ - enhance action, role, and view metadata services with change detection and JSON normalization
35
+ - add introspection services for MSSQL, MySQL, and PostgreSQL
36
+ - add new dashboard controller actions to permissions
37
+ - simplify queue health permissions by consolidating patterns
38
+ - implement explicit widget permissions and unauthorized response handling
39
+ - enhance widget permission checks and add unauthorized response handling
40
+ - add Queue SLA heatmap provider and update metadata
41
+ - update queue health menu item and reorder messages
42
+ - add various dashboard providers and runtime services
43
+ - implement WhatsApp Cloud API integration
44
+ - add gupshup whatsapp provider
45
+ - add deleteByMediaRecord method to MediaStorageProvider implementations
46
+ - add updateCustomNoteMessage action to ChatterMessageController
47
+ - add secure custom-note edit API with attachment add/remove support
48
+ - implemented social media oath for facebook and microsoft
49
+ - add partialUpdate endpoint to menu-item-metadata controller and update metadata seeder relation field name
50
+ - implemented social media oath for facebook and microsoft
51
+ - add Message Tree Action and corresponding view for mqMessage
52
+ - implement processing timeout for RabbitMQ subscriber
53
+ - Add a composite index to `ChatterMessage` on `coModelName` and `coModelEntityId`, and an index to `chatterMessage` in `ChatterMessageDetails`.
54
+ - Migrate date/time transformers to UtcDateTimeTransformer.
55
+ - simplify S3 URL resolution DTO, and remove unused S3 resolution logic.
56
+
57
+ ### Fixed
58
+
59
+ - make currentValue optional in CreateModelSequenceDto and update seeding logic to exclude it
60
+ - change matched column type from bit to default nullable boolean
61
+ - improve error message for media deletion restriction
62
+ - use transactions entitymanager for all subscribers only for embedded db projects
63
+ - update consuming project name resolution to use parent directory
64
+ - update solidx directory path to include consuming project name
65
+ - correct package name in model generation command and update error handling in module metadata retrieval
66
+ - username
67
+ - remove type specification for encrypted column in Setting entity, to work in mssql also
68
+ - handle null or empty security rule configuration strings in repository
69
+
70
+ ### Changed
71
+
72
+ - update media type handling in CreateFieldMetadataDto and FieldMetadataService
73
+ - remove onDelete cascade option from ManyToOne relationships in entity definitions
74
+ - unify datetime column types across entities using helper function
75
+ - remove explicit timestamp type for nullable date columns across entities
76
+ - update CommonEntity properties to be optional and adjust types in WorkflowTriggerExecution
77
+ - rename create-draft-publish-helper.service to draft-publish-helper.service and update imports
78
+ - inject InternationalisationHelperService in ModuleTestDataService and CrudHelperService
79
+ - separate generic delete from draft-publish and i18n cleanup in CRUDService
80
+ - remove unused boolean type and related system column definitions from DatasourceIntrospectionService
81
+ - update CrudHelperService to initialize DraftPublishHelperService directly in the class refactor: remove publishedAt sorting logic from getLayout method in ViewMetadataService
82
+ - simplify published version filtering in CRUDService
83
+ - remove handleSeedLocales method to streamline locale seeding process
84
+ - remove legacy dashboard files and add new dashboarding architecture guide
85
+ - remove unused dashboard question and variable providers, SQL expression resolver, and related subscribers
86
+ - remove redundant null check in resolveSecurityRuleConfig
87
+ - update body column type to longText using getColumnType helper in SmsTemplate entity
88
+ - update legacy entity fields to be nullable and support null types
89
+ - replace DTO introspection with explicit isUpdate flag in MediaFieldCrudManager
90
+ - make password scheme and failed login attempt columns non-nullable in UserEntity.
91
+ - make passwordScheme, passwordSchemeVersion, and failedLoginAttempts fields nullable in the User entity.
92
+
93
+ ### Documentation
94
+
95
+ - update expired discord link
96
+
97
+ ### Other
98
+
99
+ - changes around files name sanitization and normalization
100
+ - changes to handle variations in extension while uploading dangerous extension files
101
+ - change request body max to 25mb
102
+ - Comment out countGroupedRecords method implementation for refactoring
103
+ - show theme toggle
104
+ - changes to support passing an explicit createdAt while posting a chatter message
105
+ - Enhance countGroupedRecords and passed internationalisation and draft publish workflow parameters in executeGroupPipeline
106
+ - rename theme registry
107
+ - remove add permisson from permisson-list-view
108
+ - removed indexes on username and mobile since it is a conditional index and it breaks for mssql since multiple nulls are not allowed on unique columns
109
+ - readme changes
110
+ - removed hardcoded type against a boolean type
111
+ - changes to the default testing setting timeout to pick from env as well
112
+ - remove duplicate code
113
+ - refactoring around chatter media security fix
114
+ - add media extension support for post chatter
115
+ - Add media upload action and validation in MediaService
116
+ - add media extension support for post chatter
117
+ - changes to ensure only id and field are returned while populating the user in chatter
118
+ - Update defaultValue types in solid-core-metadata.json to strings
119
+ - 1. changes to ensure user populated for chatter and createdBy/updatedBy has only id and fullName populate 2. Added Exclude at property level on user to exclude sensitive fields by default without having to add an exclude at the class level
120
+ - Add getMentionableUsers permission
121
+ - Add endpoint to retrieve mentionable users with search and limit options
122
+ - Add error handling nodes and enhance workflow node definitions
123
+ - Add skipHooks option to seed command and related services
124
+ - Remove type specification for matched column in WorkflowTriggerExecution entity
125
+ - Enhance workflow node definitions and runtime context handling
126
+ - remvoing redundent code
127
+ - Remove onDelete cascade option from ManyToOne relationships in SavedFilters entity
128
+ - changes
129
+ - changes
130
+ - sql injection vulnerability closed in filter queries
131
+ - Remove LocalPath
132
+ - revert changes
133
+ - revert changes
134
+ - revert changes
135
+ - re revert
136
+ - revert changes
137
+ - private-file-cleanup
138
+ - add downlaodurl
139
+ - changes to allow overriding the is allowed api keys flag thru extension user
140
+ - Revert "user enumeration"
141
+ - remove validation from username and mobile
142
+ - user create validation bugs
143
+ - add normalize for otp based also
144
+ - Disable metadata pruning by default in seed command configuration
145
+ - Update seed command to enable metadata pruning by default
146
+ - handle-case-sensitive-for-email
147
+ - Add delete permissions for ImportTransactionController in solid-core metadata
148
+ - Add permissions for import/export functionality in solid-core metadata
149
+ - Refactor role assignment for admin users to handle capability roles individually
150
+ - discard changes
151
+ - add support for static file
152
+ - Add capability roles for admin users in module metadata seeder
153
+ - Enhance module metadata seeder with event emission for start and finish; add options interface for seeding configuration
154
+ - attachment
155
+ - Add new roles and permissions for import/export functionality; refactor role permission handling
156
+ - make isPublic default true
157
+ - changes to show the image inline
158
+ - cleanup againts media's
159
+ - inline role crate false
160
+ - Implement chatter mention notification system with email templates and queue handling
161
+ - Add messageBodyMentions field to chatter message DTOs and entity
162
+ - fix-audit-bug
163
+ - changes to include signed url token for private media
164
+ - Revert "Revert "rename function name""
165
+ - Revert "Revert "add private media support""
166
+ - Add media file type constants and enhance security for media uploads
167
+ - remove some unusable code
168
+ - some changes
169
+ - handle technical error messages due to missing resource in static resources folder
170
+ - Revert "add private media support"
171
+ - Revert "rename function name"
172
+ - rename function name
173
+ - add private media support
174
+ - some fixes
175
+ - solidx session invalid changes
176
+ - add validation on get chatter message
177
+ - updatedAt value is updating now
178
+ - fix to allow linking a userKey belonging to the parent model while seeding a child model
179
+ - add security against chatter
180
+ - chatter message endpoint made public
181
+ - removed embedded db support
182
+ - Add default sorting by ID if not explicitly specified in order options
183
+ - solidx theme settings
184
+ - add icons across all the models in solid core
185
+ - media upload added behind auth
186
+ - Refactor module path resolution to use kebab-case and extract migration file writing logic into a separate method
187
+ - Implement cleanup for TypeORM datasource entities and enhance file handling in SolidTsMorphService
188
+ - class serializer interceptor added for impact of Exclude and Expose
189
+ - Enhance datasource introspection with primary key validation and user key resolution
190
+ - Concurrent Login Feature
191
+ - user enumeration
192
+ - add helper text key on settings object .........
193
+ - changes to handle case insenstive filter operations if the values are other than string by casting
194
+ - menus item fix
195
+ - changes to ensure entity manager does not get serialized as part of the message for the computed field queue
196
+ - added nodemon heartbeat to allow in-process db query execution for code generation for embedded db
197
+ - display name changed
198
+ - name changed
199
+ - added settings for configure the row click on solid list view
200
+ - Revert "Fix for this issue > stop applying lower for numeric fields."
201
+ - fixed legacy entity files names
202
+ - view metadata type field - selection static and roles required false from menu-item
203
+ - Fix for this issue > stop applying lower for numeric fields.
204
+ - refactor and add migration command
205
+ - Handling for audit subscriber to defer audit publish when in embedded db mode
206
+ - Fixed the one genuine mid-transaction second-connection case and hardened the latent spots (for embedded db)
207
+ - changes to take in option for seeding with modules in current seed method
208
+ - Fix validation logic to parse string field values as integers before applying validations
209
+ - remove computed field from instruction add one remove field command fix many-to-many on chatter log
210
+ - ad changes
211
+ - Add locale seeding functionality and enhance locale management
212
+ - subscribers now use the event’s own transaction connection instead of a second pooled one (helpful for embedded db)
213
+ - changes to avoid extra module checks before dynamically loading it
214
+ - defaulted to modulemetadataseederservice if no seeder provided
215
+ - Add Date field in Instructions Response
216
+ - ai interaction cleanup changes
217
+ - enabling create,edit,import,export on permission and lov modules
218
+ - added module to rolemetadata list view
219
+ - roles group by module changes
220
+ - Refactor dashboard providers to utilize new bucket expression and normalization functions
221
+ - Implement Datasource Management functionality with controller, service, and DTO
222
+ - added index to fields newly added as sortable and searchable
223
+ - Add archiver package to dependencies
224
+ - removed unnecessary seed file
225
+ - Add TypeORM migration helper functions and export in index
226
+ - fixes
227
+ - reverted accidental removal of the layout builder root menu
228
+ - pending cleanup of solid core menu items
229
+ - Refactor metadata: remove standalone menu items and add scheduled jobs and saved filters tree views
230
+ - Remove ChatterMessageDetails and ImportTransactionErrorLog menu items; add Chatter Messages tree view and action. Other menu sub menus cleanup done
231
+ - Add model sequence and list of values tree views to metadata, other cleanup changes
232
+ - changes for IAM
233
+ - Add clearPackageRuntime functionality and corresponding metadata action
234
+ - Add archiver dependency and implement module package export functionality
235
+ - Refactor menu cleanup logic in ModelMetadataService and ModuleMetadataService; improve error handling for file deletion and update build commands in ModulePackageService to use solidctl.
236
+ - Update solid-core-metadata.json to disable create, edit, and delete actions, and set searchable attributes to false for specific fields for media storage provider
237
+ - Add media tree view and action & media view cleanup, enhance file storage provider with file size tracking, implemented storeStreams for s3
238
+ - Remove cleanup procedures for module metadata across all SQL dialects and implement menu and action cleanup in the service layer.
239
+ - Remove unused database bootstrap service and related SQL cleanup procedures
240
+ - cleanup
241
+ - Add view and action metadata tree views with updated permissions and searchable fields
242
+ - Add view and action metadata tree views with updated permissions and searchable fields
243
+ - menu item model cleanup
244
+ - Add resumable import handling and transaction management in module package service
245
+ - Add method to retrieve Solid UI module path and enhance cleanup logging
246
+ - Enhance module metadata seeder: add validation for module name, streamline array handling for scheduled jobs, saved filters, list of values, security rules, sms templates, email templates, menus, actions, views, users, roles, media storage providers, model sequences, and models metadata.
247
+ - Implement module package management: add controller, service, and DTOs for import, export, and build operations.
248
+ - many to one left join issue fixed
249
+ - Refactor field metadata actions and views: update action types, enhance searchability, and adjust permissions for create, edit, and delete operations.
250
+ - Refactor CRUD and model metadata services to enhance group filtering and pagination; streamline response handling and improve query structure. configuration changes to support tree view in model metadata
251
+ - Update solid-core metadata: remove import/export options, rename fields, and add sortable attribute
252
+ - Enhance solid-core metadata structure for module mdtadata by removing import/export options and adding sortable attributes for fields
253
+ - Implement module metadata explorer with CRUD operations and search functionality
254
+ - Refactor module metadata paths to use a consistent directory structure and improve file resolution logic
255
+ - Bug fixs
256
+ - added frontend base url as well to the default settings
257
+ - minor cleanup
258
+ - changes to cleanup legacy table related fields
259
+ - changes for new dashboards functionality
260
+ - always print server startup line regardless of log level
261
+ - Add field quality checks and fixes checklist for backend validation
262
+ - typeo issue
263
+ - Agent table clean up
264
+ - Add manual interaction step for Playwright and update README
265
+ - provision made to unlink data rather than having to teardown everything
266
+ - provision made to unlink data rather than having to teardown everything
267
+ - changes to colour the server startup line
268
+ - Agent table clean up
269
+ - changes to avoid too many initialization logs. controlled thru the verboseBootstrap option to the boostrap helper
270
+ - removed id command options and retained the singular name option only for consistency purposes
271
+ - changes to route genertion commands thru solidctl. The refresh-module & refresh-model commands are what are eventually called and end up calling the services only, keeping calling consistent and ensuring everything is route thru solidctl generate
272
+ - got rid of fieldNamesForRefresh and fieldIdsForRefresh dead chain since it is not used now, due to fields being read in the code builder from the metadata json directly
273
+ - MCP table solid changes
274
+ - playwrite added as dependency instead
275
+ - changes to the test runner
276
+ - chatter message user resolution chagnes
277
+ - bug fix in chatter message user resolution after we moved to queues.
278
+ - moved back to beta3
279
+ - failed login attempts field added to the json and update dto and exposed in entity
280
+ - removed un-necessary index on newvalue display
281
+ - ts changes error: any
282
+ - auto addition of menus happens at the bottom now. list view layout changes for security access rules + enabled delete made welcome email & sms SystemAdminEditable
283
+ - changed model metadata service default form layout to be single column
284
+ - added typing to catch blocks + authentication service bug fixes for private registration flow
285
+ - added typing to catch blocks + authentication service bug fixes for private registration flow
286
+ - normalised @ApiTags
287
+ - enum for passwordless modes
288
+ - bug fix in how alternative actions are rendered
289
+ - queue related bug fixes
290
+ - changes to add a websocket adaptor to the bootstrap server routine
291
+ - license changes
292
+ - type fixes
293
+ - removed min and max from long text mapping
294
+ - bug fix for shortext field mapping
295
+ - changes to post the testing results to a webhook api with a test payload
296
+ - added import multer this fixes un-necessary ts errors in vscode
297
+ - ts errors fixed
298
+ - bug fix in rabbitmq subscriber optimisation in all subscribers to default to role both if not specified
299
+ - formatting changes
300
+ - facebook oauth
301
+ - Status required false
302
+ - updated gitignore
303
+ - dleete un-necessary docs
304
+ - deleted un-necessary files
305
+ - changes related to more grooming
306
+ - api added in cors
307
+ - refactor Oauth strategy
308
+ - Revert "Ft social media login"
309
+ - bug fix
310
+ - bug fix
311
+ - add new api me endpoint and role based settings
312
+ - setting changes for new ui architecture
313
+ - changes for new settings structure
314
+ - chatter task subtype and related changes
315
+ - bug fix
316
+ - fixes
317
+ - changes to get rid of angular schematics for helping with string case transformation for consistency purpose i.e (lodash is being used on frontend too) and avoid edge cases
318
+ - changes to handle import logs as well, thru configured winston log level
319
+ - change isMultiSelect to true in solid-core-metadata.json
320
+ - change isMultiSelect to false and set visibility for cronExpression, dayOfWeek, and dayOfMonth fields to false
321
+ - tightened up queue subscriber interface + fixed core subscribers that were not returning anything. all subscribers must either return a promise or if not async then the actual value
322
+ - removed authTheme setting, auth pages dark - light is now controlled by the same local storage as the rest of the app shell
323
+ - bug fix: passwordless registration should create a user with active false
324
+ - apikeys attribute was not exposed
325
+ - refactor Oauth strategy
326
+ - changes to avoid sending out encrypted setting in api responses. also removed menu item and action entries for ai settings. (temporary fix, since setting ui to be revamped soon)
327
+ - bug fix
328
+ - null check on role
329
+ - made provision to seed custom permissions
330
+ - handled seed scenario too
331
+ - upload File and expectHidden changes
332
+ - extension user cleanup and checks added
333
+ - fixed types for cleanup
334
+ - added tsc-alias as well to ensure clean imports in dist as an extra cleanup measure
335
+ - fixes bare shell imports with relative imports
336
+ - dynamic import fix
337
+ - removed unnecessary file
338
+ - fixes for 1. throw exception if extension user and no provider configured 2. fixed roles method in the extensionUserProvider interface to make it mandatory
339
+ - removed base abstract class
340
+ - added interface too
341
+ - changes
342
+ - changes to test data seeding & fixed the type for authenticationService.signup method
343
+ - changes to user dto to include the api keys toggle
344
+ - add default role to the user only if there are no roles resolved against a user
345
+ - changes to replace current extension user custom user creation logic with the use of dynamic extension user provider. cleans up creation of an extension user
346
+ - Only forward --debug when explicitly enabled.
347
+ - toolOutput field changes to json
348
+ - adding user api key entity to export
349
+ - minor optimisation to how dynamic modules are loaded
350
+ - Add Discord badge to top of README
351
+ - Fix broken BSL license link and add Discord link to README
352
+ - Add BSL 1.1 license and update package.json license field
353
+ - Seed user and roles in testing data
354
+ - removed readme.txt
355
+ - moved type and interfaces in interfaces.ts and refactored accordingly
356
+ - changed to md
357
+ - added readme
358
+ - Ai setting model change
359
+ - changes to allow encrypting setting keys
360
+ - form view clean up
361
+ - Agent table list view changes
362
+ - synchronize false
363
+ - changes to resolve the selection dynamic provider by name and token both
364
+ - changes to bypass swagger urls from csp policy
365
+ - changes to create a seperate endpoint for admin users to generate api key + custom repository created for userApiKey
366
+ - changes to fix issue around isAllowedToGenerateApiKeys not getting saved during user creation
367
+ - changes to implement the sso code and sso exchange use cases
368
+ - removed orm types / exported api key entity
369
+ - added provision to control if api key creation is allowed for the user
370
+ - api key changes for backend
371
+ - changes to bootstrap helper to read from standard env variables and avoid redundantly passing swagger options
372
+ - fix to call addRoles only if role names are present
373
+ - Revert "revert: refactor: update legacy entity fields to be nullable and support null types"
374
+ - refactor: update legacy entity fields to be nullable and support null types
375
+ - Json structure change
376
+ - Agent table metadata clean up changes
377
+ - longtext
378
+ - longtext changes
379
+ - Agent tables clean up
380
+ - fixes to seed many-to-many relation for tests
381
+ - changes to seed media in testing data
382
+ - Chatter modelUserkey and excel many to one issue
383
+ - keeping the default selectionValueType as string since this is a good default
384
+ - bug fixes around how media is done
385
+ - bug fixes
386
+ - try catch inside logEvent
387
+ - media has card based metadata
388
+ - Refresh token activity
389
+ - changes to implement the sso code and sso exchange use cases
390
+ - cleanup
391
+ - enabled kanban view on mq message
392
+ - Agent table changes
393
+ - changes to disallow deleting a model or module in production
394
+ - changelog version bumped
395
+ - changelog added
396
+ - changes to control the logging using env variables & set appropriate defaults basis environment
397
+ - chnages for logging
398
+ - Chatter queue fixs
399
+ - one more "beta" for ozzy
400
+ - additional loggging in cors helper
401
+ - changes
402
+ - Redis Queue component and rabbitMQ folder changes
403
+ - changes to track old and new fields as part of the delete entity operation
404
+ - optimizations done for audit subcriber
405
+ - changes to optimize audit subscriber code to use background jobs entirely instead of partially
406
+ - changes to push all work/processing to the chatter queue subscriber to better manage workloads & db pooling utilization
407
+ - formatting changes
408
+ - performance optimisations 1. created by updated by subscriber is not querying users again and again 2. rabbit pub / sub can now optinally switch off db persistence
409
+ - qs depth config increased
410
+ - changes to move the shouldTrackAudit check into registry to avoid unnecessary checks during runtime
411
+ - cached model metadata queries
412
+ - changse
413
+ - disabled extra loggign
414
+ - chagnes
415
+ - reduced concurrency in computed fields
416
+ - additional loggign
417
+ - added indexes to mobile & email since those are frequently queries upon
418
+ - changes to optimize the permission service methods used in the hotspot load paths within auth and access token guards
419
+ - Redis background job changes
420
+ - Chatter Rationalizing
421
+ - changes
422
+ - changes
423
+ - changes to merge the entityId sequence computed provider into the existing sequence number provider
424
+ - changes to export bootstrap helpers for server & cli nest applications
425
+ - changes to toggle the validation for selection dynamic provider. Also changes to export a bootstrap helper function
426
+ - registered the EntityIdSequenceNumComputedFieldProvider computation provider as a nest provider
427
+ - Added EntityIdSequenceNumComputedFieldProvider as an alternative simpler provider which uses the modelSequence configuration and relies on the id persisted during creation for an entity
428
+ - added index on message id in mq message table
429
+ - changes around sequence num computed field being a post computation provider error logging in rabbit mq
430
+ - changes to save model sequence id as part of post compute instead of pre compute
431
+ - changse
432
+ - Revert "High concurrency fix for alpha num and sequence num computed fields"
433
+ - High concurrency fix for alpha num and sequence num computed fields
434
+ - bug fix in cron evalutaion
435
+ - tighter logging around roles
436
+ - scheduler now supports env based specific jobs starting and others not
437
+ - reverting back to text (i.e since it is good enough for mysql too) i.e 64kb for these fields
438
+ - revert cross db changes for view-metadata-entity
439
+ - fixes
440
+ - changes to handle cross-db compatibility
441
+ - added type as simple-json
442
+ - Remove isValidateForUpdate hack that relied on checking dto.id !== undefined
443
+ - Revert "Merge branch 'media-update' into 'main'"
444
+ - Mysql related changes
445
+ - ts-morph and media storage fix
446
+ - dashboard layout menu item added
447
+ - dashboard changes
448
+ - scheduler bug fix
449
+ - made provision to execute scheduled jobs manually
450
+ - changes
451
+ - cleanup
452
+ - logging related changes and made user activity history tree view
453
+ - changes to return the wall clock time as utc for chatter as well to keep it...
454
+ - changes around dashboard question refactoring
455
+ - default tree view and action added on code generation
456
+ - Date time format changes in audit
457
+ - user activity history on otp login
458
+ - changes
459
+ - changelog added
460
+ - reverted legacy and common entity to use local date time transformer only
461
+ - added changelog
462
+ - made playwright dependency lazy
463
+ - ai interaction table user is nullable now
464
+ - rabbitmq subscriber does a prefetch now allowing for more concurrency
465
+ - formatting changes
466
+ - Version info changes
467
+ - dummy otp can now be enabled on a per user basis
468
+ - jwt token optimisation
469
+ - optimised the authentication flow in microservice adapter to cache access token
470
+ - deleted file containing secrets
471
+ - changes
472
+ - optimisation around how dummy otp is managed
473
+ - isSeeded added
474
+ - bug fix for fetch layouts
475
+ - view modes added in layout
476
+ - One to many crud manager fixes
477
+ - one-to-many-crud-manager-fixes
478
+ - Many to many crud field manager fixes
479
+ - patch endpoint added in role controller
480
+ - many-to-many field fixes
481
+ - modelSequenceFormViewChangeHandler added on field change
482
+ - changes to convert the passwordlessRegistrationValidateWhat from array to string
483
+ - changes to format group values consistently
484
+ - fixes for normalizing group values
485
+ - Revert "changes to return groupValue in the group meta response as well. groupValue is..."
486
+ - changes to return groupValue in the group meta response as well. groupValue is...
487
+ - changes to return groupValue in the group meta response as well. groupValue is...
488
+ - filter_field_granularity_supported_added_for_date_fields
489
+ - password registration/login cleanup + max failed login attempts checks added
490
+ - removed unsafe inline from CSP
491
+ - removed incorrect comment
492
+ - changes
493
+ - Revert "replaced playwright with lazy dependency"
494
+ - replaced playwright with lazy dependency
495
+ - count and average
496
+ - fixes to solid core metadata configuration
497
+ - make `s3Key` and `isPrivate` properties mandatory in `ResolveS3UrlDto`.
498
+ - solid seed now prints proper exception stack trace
499
+ - added playwright dependencies as peer dependencies
500
+ - changed playwright import to make it lazy
501
+ - issue fixes
502
+ - formatting changes
503
+ - formatting changes
504
+ - changes for test setup
505
+ - package changes
506
+ - Changes to generate an SA user with the default password for simpler experience during setup
507
+ - more changes to support form data based uploads
508
+ - changes
509
+ - changes around testing workflow
510
+ - unified testing utitlities
511
+ - added comments to the slug code
512
+ - refactored queue namespacign
513
+ - queue namespacing related chanes
514
+ - removed todo
515
+ - queue name related changes
516
+ - cag
517
+ - changrs
518
+ - queues names are now namespaced by service naem
519
+ - enabled logs
520
+ - debug logs
521
+ - testing docs updated
522
+ - changes
523
+ - cleanup
524
+ - removed old testing related fiels
525
+ - testing infra now supports data based interpolation
526
+ - testing changes: now we support fully custom test specs
527
+ - changes for test automation
528
+ - changes to tsconfig for playwright tests
529
+ - exporting typeorm db helper
530
+ - removed the files section
531
+ - changes for playwright testing
532
+ - changes to disable service controller seed method
533
+ - formatting changes
534
+ - oom issue
535
+ - logger added for chatter
536
+ - changed arg to kebab case instead of came case in schematic service
537
+ - default menu icons added
538
+ - rabbitmq subscriber: add retries, DLX queues, reconnects, and docs
539
+ - removed un-necessary log
540
+ - fix for handling non existence of fieldNamesForRemoval arg
541
+ - foirmatting canges
542
+ - Archived/solidstarters main
543
+ - version changes
544
+ - changed org : @solidstarters -> @solidxai
545
+ - removed publish script, since it is replaced with solidctl release
546
+ - chanes
547
+ - Revert "@solidstarters namespace changed to @solidx"
548
+ - @solidstarters namespace changed to @solidx
549
+ - file service interface changes
550
+ - CR in s3 file service, url options now supports isPrivateBucket allowing one to generate signed and un-signed URLs using the getUrl method
551
+ - changes to the publish script to support: 1.reverse merging main to dev to ensure latest package version is synced with dev post publish. 2. added guardrail to allow publishing from main branch only 3. added dry run option and force option i.e (in case we want to publish from another branch, but is hidden) 4. script now pushes the git version tags as well
552
+ - changes to pass minimal parameters to the schematics project and pick the rest from the metadata configuration json file (avoid long shell commands)
553
+ - test data workflow
554
+ - test-data command
555
+ - seed command updated
556
+ - changes
557
+ - changes
558
+ - seed command changes to support pruning, test-data-setup and test-data-teardown.
559
+ - seeding now supports seedData allowing us to seed fixtures for testing.
560
+ - precomputations now skip computation if value is already provided
561
+ - added utility for findOneByUserKey
562
+ - pruning related chagnes
563
+ - changes
564
+ - more changes related to pruning metadata
565
+ - pruen logs added
566
+ - module metadata seeder now does prune also
567
+ - reformatting to improve readability
568
+ - changes
569
+ - file type not allowed. Allowed: image, document, pdf. Received mimetype: application/pdf (mapped to file)
570
+ - bug fixes
571
+ - changes to cleanup the implementation by having the write method of file service return the url post write
572
+ - changes to support using the region specified in a media storage provider, instead only the default while creating an s3 client
573
+ - fixes for using the default-aws-s3 bucket for storing the settings media if default file service is s3
574
+ - changes to settings media storage logic i.e copy multer path to file service implementation write
575
+ - file service abstraction cleanup
576
+ - chagnes
577
+ - Dashboard Question Responsive
578
+
3
579
  ## [0.1.13-beta.15] - 2026-08-07
4
580
 
5
581
  ### Added
@@ -2,7 +2,9 @@ export type MediaCategory = 'image' | 'audio' | 'video' | 'file' | 'pdf';
2
2
  export declare const MEDIA_CATEGORIES: readonly ["image", "audio", "video", "file", "pdf"];
3
3
  export declare const DANGEROUS_EXTENSIONS: Set<string>;
4
4
  export declare const DANGEROUS_MIME_TYPES: Set<string>;
5
+ export declare function normalizeUploadedFileName(fileName?: string | null): string;
5
6
  export declare function getLowercaseFileExtension(fileName?: string | null): string | undefined;
7
+ export declare function getLowercaseFileExtensionSegments(fileName?: string | null): string[];
6
8
  export interface UploadedFileLike {
7
9
  mimetype?: string;
8
10
  originalname?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"media-file-types.d.ts","sourceRoot":"","sources":["../../src/constants/media-file-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAEzE,eAAO,MAAM,gBAAgB,qDAAsD,CAAC;AAapF,eAAO,MAAM,oBAAoB,aAI/B,CAAC;AAQH,eAAO,MAAM,oBAAoB,aAE/B,CAAC;AAEH,wBAAgB,yBAAyB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAWtF;AAGD,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAGD,wBAAgB,mBAAmB,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,IAAI,GAAG,MAAM,CAE1E;AAQD,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,IAAI,GAAG,OAAO,CAO5E;AASD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAM3D,CAAC;AAMF,eAAO,MAAM,sBAAsB,aAKjC,CAAC"}
1
+ {"version":3,"file":"media-file-types.d.ts","sourceRoot":"","sources":["../../src/constants/media-file-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAEzE,eAAO,MAAM,gBAAgB,qDAAsD,CAAC;AAapF,eAAO,MAAM,oBAAoB,aAI/B,CAAC;AAQH,eAAO,MAAM,oBAAoB,aAE/B,CAAC;AAcH,wBAAgB,yBAAyB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAkB1E;AAOD,wBAAgB,yBAAyB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAStF;AAWD,wBAAgB,iCAAiC,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,EAAE,CAGpF;AAGD,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAGD,wBAAgB,mBAAmB,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,IAAI,GAAG,MAAM,CAE1E;AAQD,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,IAAI,GAAG,OAAO,CAO5E;AASD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAM3D,CAAC;AAMF,eAAO,MAAM,sBAAsB,aAKjC,CAAC"}
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.INLINE_SAFE_EXTENSIONS = exports.EXT_TO_MEDIA_TYPE = exports.DANGEROUS_MIME_TYPES = exports.DANGEROUS_EXTENSIONS = exports.MEDIA_CATEGORIES = void 0;
4
+ exports.normalizeUploadedFileName = normalizeUploadedFileName;
4
5
  exports.getLowercaseFileExtension = getLowercaseFileExtension;
6
+ exports.getLowercaseFileExtensionSegments = getLowercaseFileExtensionSegments;
5
7
  exports.getUploadedFileName = getUploadedFileName;
6
8
  exports.isDangerousMediaFile = isDangerousMediaFile;
7
9
  exports.MEDIA_CATEGORIES = ['image', 'audio', 'video', 'file', 'pdf'];
@@ -18,22 +20,39 @@ exports.DANGEROUS_EXTENSIONS = new Set([
18
20
  exports.DANGEROUS_MIME_TYPES = new Set([
19
21
  'image/svg+xml', 'text/html', 'application/xhtml+xml',
20
22
  ]);
21
- function getLowercaseFileExtension(fileName) {
23
+ function normalizeUploadedFileName(fileName) {
22
24
  if (!fileName) {
23
- return undefined;
25
+ return '';
26
+ }
27
+ let name = String(fileName).split(/[/\\]/).pop() ?? '';
28
+ const nulIndex = name.indexOf('\0');
29
+ if (nulIndex >= 0) {
30
+ name = name.slice(0, nulIndex);
31
+ }
32
+ const streamIndex = name.indexOf(':');
33
+ if (streamIndex >= 0) {
34
+ name = name.slice(0, streamIndex);
24
35
  }
25
- const lastDotIndex = fileName.lastIndexOf('.');
26
- if (lastDotIndex < 0 || lastDotIndex === fileName.length - 1) {
36
+ return name.replace(/[\s.]+$/, '');
37
+ }
38
+ function getLowercaseFileExtension(fileName) {
39
+ const name = normalizeUploadedFileName(fileName);
40
+ const lastDotIndex = name.lastIndexOf('.');
41
+ if (lastDotIndex < 0 || lastDotIndex === name.length - 1) {
27
42
  return undefined;
28
43
  }
29
- return fileName.slice(lastDotIndex + 1).toLowerCase();
44
+ return name.slice(lastDotIndex + 1).toLowerCase();
45
+ }
46
+ function getLowercaseFileExtensionSegments(fileName) {
47
+ const segments = normalizeUploadedFileName(fileName).toLowerCase().split('.');
48
+ return segments.slice(1).filter(segment => segment.length > 0);
30
49
  }
31
50
  function getUploadedFileName(file) {
32
51
  return file?.originalname ?? file?.filename ?? '';
33
52
  }
34
53
  function isDangerousMediaFile(file) {
35
- const ext = getLowercaseFileExtension(getUploadedFileName(file));
36
- if (ext && exports.DANGEROUS_EXTENSIONS.has(ext)) {
54
+ const segments = getLowercaseFileExtensionSegments(getUploadedFileName(file));
55
+ if (segments.some(segment => exports.DANGEROUS_EXTENSIONS.has(segment))) {
37
56
  return true;
38
57
  }
39
58
  return exports.DANGEROUS_MIME_TYPES.has((file?.mimetype || '').toLowerCase().trim());