@saltcorn/data 0.6.1 → 0.6.2-beta.3
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/base-plugin/actions.d.ts +141 -0
- package/dist/base-plugin/actions.d.ts.map +1 -0
- package/dist/base-plugin/actions.js +551 -0
- package/dist/base-plugin/actions.js.map +1 -0
- package/dist/base-plugin/base.test.d.ts +2 -0
- package/dist/base-plugin/base.test.d.ts.map +1 -0
- package/dist/base-plugin/base.test.js +15 -0
- package/dist/base-plugin/base.test.js.map +1 -0
- package/dist/base-plugin/fieldviews.d.ts +25 -0
- package/dist/base-plugin/fieldviews.d.ts.map +1 -0
- package/dist/base-plugin/fieldviews.js +159 -0
- package/dist/base-plugin/fieldviews.js.map +1 -0
- package/dist/base-plugin/fileviews.d.ts +52 -0
- package/dist/base-plugin/fileviews.d.ts.map +1 -0
- package/dist/base-plugin/fileviews.js +59 -0
- package/dist/base-plugin/fileviews.js.map +1 -0
- package/dist/base-plugin/index.d.ts +524 -0
- package/dist/base-plugin/index.d.ts.map +1 -0
- package/{base-plugin → dist/base-plugin}/index.js +22 -24
- package/dist/base-plugin/index.js.map +1 -0
- package/dist/base-plugin/types.d.ts +383 -0
- package/dist/base-plugin/types.d.ts.map +1 -0
- package/dist/base-plugin/types.js +1080 -0
- package/dist/base-plugin/types.js.map +1 -0
- package/dist/base-plugin/viewtemplates/edit.d.ts +116 -0
- package/dist/base-plugin/viewtemplates/edit.d.ts.map +1 -0
- package/dist/base-plugin/viewtemplates/edit.js +561 -0
- package/dist/base-plugin/viewtemplates/edit.js.map +1 -0
- package/dist/base-plugin/viewtemplates/feed.d.ts +73 -0
- package/dist/base-plugin/viewtemplates/feed.d.ts.map +1 -0
- package/dist/base-plugin/viewtemplates/feed.js +348 -0
- package/dist/base-plugin/viewtemplates/feed.js.map +1 -0
- package/dist/base-plugin/viewtemplates/filter.d.ts +46 -0
- package/dist/base-plugin/viewtemplates/filter.d.ts.map +1 -0
- package/dist/base-plugin/viewtemplates/filter.js +267 -0
- package/dist/base-plugin/viewtemplates/filter.js.map +1 -0
- package/dist/base-plugin/viewtemplates/list.d.ts +99 -0
- package/dist/base-plugin/viewtemplates/list.d.ts.map +1 -0
- package/dist/base-plugin/viewtemplates/list.js +471 -0
- package/dist/base-plugin/viewtemplates/list.js.map +1 -0
- package/dist/base-plugin/viewtemplates/listshowlist.d.ts +41 -0
- package/dist/base-plugin/viewtemplates/listshowlist.d.ts.map +1 -0
- package/dist/base-plugin/viewtemplates/listshowlist.js +248 -0
- package/dist/base-plugin/viewtemplates/listshowlist.js.map +1 -0
- package/dist/base-plugin/viewtemplates/room.d.ts +140 -0
- package/dist/base-plugin/viewtemplates/room.d.ts.map +1 -0
- package/dist/base-plugin/viewtemplates/room.js +469 -0
- package/dist/base-plugin/viewtemplates/room.js.map +1 -0
- package/dist/base-plugin/viewtemplates/show.d.ts +101 -0
- package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -0
- package/dist/base-plugin/viewtemplates/show.js +562 -0
- package/dist/base-plugin/viewtemplates/show.js.map +1 -0
- package/dist/base-plugin/viewtemplates/viewable_fields.d.ts +108 -0
- package/dist/base-plugin/viewtemplates/viewable_fields.d.ts.map +1 -0
- package/dist/base-plugin/viewtemplates/viewable_fields.js +563 -0
- package/dist/base-plugin/viewtemplates/viewable_fields.js.map +1 -0
- package/dist/contracts.d.ts +49 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +212 -0
- package/dist/contracts.js.map +1 -0
- package/dist/coverage/lcov-report/block-navigation.d.ts +2 -0
- package/dist/coverage/lcov-report/block-navigation.d.ts.map +1 -0
- package/dist/coverage/lcov-report/block-navigation.js +66 -0
- package/dist/coverage/lcov-report/block-navigation.js.map +1 -0
- package/dist/coverage/lcov-report/prettify.d.ts +1 -0
- package/dist/coverage/lcov-report/prettify.d.ts.map +1 -0
- package/dist/coverage/lcov-report/prettify.js +478 -0
- package/dist/coverage/lcov-report/prettify.js.map +1 -0
- package/dist/coverage/lcov-report/sorter.d.ts +2 -0
- package/dist/coverage/lcov-report/sorter.d.ts.map +1 -0
- package/dist/coverage/lcov-report/sorter.js +141 -0
- package/dist/coverage/lcov-report/sorter.js.map +1 -0
- package/dist/db/connect.d.ts +40 -0
- package/dist/db/connect.d.ts.map +1 -0
- package/dist/db/connect.js +150 -0
- package/dist/db/connect.js.map +1 -0
- package/dist/db/db.test.d.ts +2 -0
- package/dist/db/db.test.d.ts.map +1 -0
- package/dist/db/db.test.js +28 -0
- package/dist/db/db.test.js.map +1 -0
- package/dist/db/fixtures.d.ts +8 -0
- package/dist/db/fixtures.d.ts.map +1 -0
- package/dist/db/fixtures.js +300 -0
- package/dist/db/fixtures.js.map +1 -0
- package/dist/db/index.d.ts +3 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +41 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/reset_schema.d.ts +13 -0
- package/dist/db/reset_schema.d.ts.map +1 -0
- package/{db → dist/db}/reset_schema.js +45 -55
- package/dist/db/reset_schema.js.map +1 -0
- package/dist/db/state.d.ts +56 -0
- package/dist/db/state.d.ts.map +1 -0
- package/dist/db/state.js +608 -0
- package/dist/db/state.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/{index.js → dist/index.js} +2 -1
- package/dist/index.js.map +1 -0
- package/dist/migrate.d.ts +12 -0
- package/dist/migrate.d.ts.map +1 -0
- package/dist/migrate.js +94 -0
- package/dist/migrate.js.map +1 -0
- package/dist/migrations/202005141503.d.ts +2 -0
- package/dist/migrations/202005141503.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202005141503.js +2 -1
- package/dist/migrations/202005141503.js.map +1 -0
- package/dist/migrations/202005241712.d.ts +2 -0
- package/dist/migrations/202005241712.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202005241712.js +2 -1
- package/dist/migrations/202005241712.js.map +1 -0
- package/dist/migrations/202005251037.d.ts +2 -0
- package/dist/migrations/202005251037.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202005251037.js +2 -1
- package/dist/migrations/202005251037.js.map +1 -0
- package/dist/migrations/202005282134.d.ts +2 -0
- package/dist/migrations/202005282134.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202005282134.js +2 -1
- package/dist/migrations/202005282134.js.map +1 -0
- package/dist/migrations/202006022156.d.ts +2 -0
- package/dist/migrations/202006022156.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202006022156.js +2 -1
- package/dist/migrations/202006022156.js.map +1 -0
- package/dist/migrations/202006051507.d.ts +2 -0
- package/dist/migrations/202006051507.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202006051507.js +2 -1
- package/dist/migrations/202006051507.js.map +1 -0
- package/dist/migrations/202006240906.d.ts +2 -0
- package/dist/migrations/202006240906.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202006240906.js +2 -1
- package/dist/migrations/202006240906.js.map +1 -0
- package/dist/migrations/202007091707.d.ts +2 -0
- package/dist/migrations/202007091707.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202007091707.js +2 -1
- package/dist/migrations/202007091707.js.map +1 -0
- package/dist/migrations/202007202144.d.ts +2 -0
- package/dist/migrations/202007202144.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202007202144.js +2 -1
- package/dist/migrations/202007202144.js.map +1 -0
- package/dist/migrations/202008031500.d.ts +2 -0
- package/dist/migrations/202008031500.d.ts.map +1 -0
- package/dist/migrations/202008031500.js +4 -0
- package/dist/migrations/202008031500.js.map +1 -0
- package/dist/migrations/202008051415.d.ts +2 -0
- package/dist/migrations/202008051415.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202008051415.js +2 -1
- package/dist/migrations/202008051415.js.map +1 -0
- package/dist/migrations/202008121149.d.ts +3 -0
- package/dist/migrations/202008121149.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202008121149.js +2 -2
- package/dist/migrations/202008121149.js.map +1 -0
- package/dist/migrations/202009112140.d.ts +3 -0
- package/dist/migrations/202009112140.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202009112140.js +2 -2
- package/dist/migrations/202009112140.js.map +1 -0
- package/dist/migrations/202009181655.d.ts +2 -0
- package/dist/migrations/202009181655.d.ts.map +1 -0
- package/dist/migrations/202009181655.js +7 -0
- package/dist/migrations/202009181655.js.map +1 -0
- package/dist/migrations/202009221105.d.ts +2 -0
- package/dist/migrations/202009221105.d.ts.map +1 -0
- package/dist/migrations/202009221105.js +4 -0
- package/dist/migrations/202009221105.js.map +1 -0
- package/dist/migrations/202009231331.d.ts +2 -0
- package/dist/migrations/202009231331.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202009231331.js +2 -1
- package/dist/migrations/202009231331.js.map +1 -0
- package/dist/migrations/202009301531.d.ts +2 -0
- package/dist/migrations/202009301531.d.ts.map +1 -0
- package/dist/migrations/202009301531.js +8 -0
- package/dist/migrations/202009301531.js.map +1 -0
- package/dist/migrations/202010231444.d.ts +2 -0
- package/dist/migrations/202010231444.d.ts.map +1 -0
- package/dist/migrations/202010231444.js +4 -0
- package/dist/migrations/202010231444.js.map +1 -0
- package/dist/migrations/202010251412.d.ts +2 -0
- package/dist/migrations/202010251412.d.ts.map +1 -0
- package/dist/migrations/202010251412.js +10 -0
- package/dist/migrations/202010251412.js.map +1 -0
- package/dist/migrations/202011021749.d.ts +2 -0
- package/dist/migrations/202011021749.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202011021749.js +2 -1
- package/dist/migrations/202011021749.js.map +1 -0
- package/dist/migrations/202011051353.d.ts +2 -0
- package/dist/migrations/202011051353.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202011051353.js +2 -1
- package/dist/migrations/202011051353.js.map +1 -0
- package/dist/migrations/202011111127.d.ts +2 -0
- package/dist/migrations/202011111127.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202011111127.js +2 -1
- package/dist/migrations/202011111127.js.map +1 -0
- package/dist/migrations/202012011203.d.ts +2 -0
- package/dist/migrations/202012011203.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202012011203.js +2 -1
- package/dist/migrations/202012011203.js.map +1 -0
- package/dist/migrations/202012100841.d.ts +2 -0
- package/dist/migrations/202012100841.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202012100841.js +2 -1
- package/dist/migrations/202012100841.js.map +1 -0
- package/dist/migrations/202012281835.d.ts +2 -0
- package/dist/migrations/202012281835.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202012281835.js +2 -1
- package/dist/migrations/202012281835.js.map +1 -0
- package/dist/migrations/202101061051.d.ts +2 -0
- package/dist/migrations/202101061051.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202101061051.js +2 -1
- package/dist/migrations/202101061051.js.map +1 -0
- package/dist/migrations/202101141128.d.ts +2 -0
- package/dist/migrations/202101141128.d.ts.map +1 -0
- package/dist/migrations/202101141128.js +4 -0
- package/dist/migrations/202101141128.js.map +1 -0
- package/dist/migrations/202102091312.d.ts +3 -0
- package/dist/migrations/202102091312.d.ts.map +1 -0
- package/dist/migrations/202102091312.js +19 -0
- package/dist/migrations/202102091312.js.map +1 -0
- package/dist/migrations/202102101624.d.ts +2 -0
- package/dist/migrations/202102101624.d.ts.map +1 -0
- package/dist/migrations/202102101624.js +7 -0
- package/dist/migrations/202102101624.js.map +1 -0
- package/dist/migrations/202102172148.d.ts +2 -0
- package/dist/migrations/202102172148.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202102172148.js +2 -2
- package/dist/migrations/202102172148.js.map +1 -0
- package/dist/migrations/202102261650.d.ts +2 -0
- package/dist/migrations/202102261650.d.ts.map +1 -0
- package/dist/migrations/202102261650.js +7 -0
- package/dist/migrations/202102261650.js.map +1 -0
- package/dist/migrations/202106102347.d.ts +2 -0
- package/dist/migrations/202106102347.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202106102347.js +2 -3
- package/dist/migrations/202106102347.js.map +1 -0
- package/dist/migrations/202106112120.d.ts +2 -0
- package/dist/migrations/202106112120.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202106112120.js +2 -3
- package/dist/migrations/202106112120.js.map +1 -0
- package/dist/migrations/202106120012.d.ts +2 -0
- package/dist/migrations/202106120012.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202106120012.js +2 -3
- package/dist/migrations/202106120012.js.map +1 -0
- package/dist/migrations/202106120220.d.ts +2 -0
- package/dist/migrations/202106120220.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202106120220.js +2 -4
- package/dist/migrations/202106120220.js.map +1 -0
- package/dist/migrations/202106121701.d.ts +2 -0
- package/dist/migrations/202106121701.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202106121701.js +2 -3
- package/dist/migrations/202106121701.js.map +1 -0
- package/dist/migrations/202106121703.d.ts +3 -0
- package/dist/migrations/202106121703.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202106121703.js +2 -3
- package/dist/migrations/202106121703.js.map +1 -0
- package/dist/migrations/202106251126.d.ts +2 -0
- package/dist/migrations/202106251126.d.ts.map +1 -0
- package/dist/migrations/202106251126.js +6 -0
- package/dist/migrations/202106251126.js.map +1 -0
- package/dist/migrations/202107281619.d.ts +2 -0
- package/dist/migrations/202107281619.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202107281619.js +2 -1
- package/dist/migrations/202107281619.js.map +1 -0
- package/dist/migrations/202107302158.d.ts +3 -0
- package/dist/migrations/202107302158.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202107302158.js +2 -3
- package/dist/migrations/202107302158.js.map +1 -0
- package/dist/migrations/202108022257.d.ts +2 -0
- package/dist/migrations/202108022257.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202108022257.js +3 -4
- package/dist/migrations/202108022257.js.map +1 -0
- package/dist/migrations/202109201624.d.ts +2 -0
- package/dist/migrations/202109201624.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202109201624.js +2 -1
- package/dist/migrations/202109201624.js.map +1 -0
- package/dist/migrations/202109301031.d.ts +3 -0
- package/dist/migrations/202109301031.d.ts.map +1 -0
- package/{migrations → dist/migrations}/202109301031.js +2 -2
- package/dist/migrations/202109301031.js.map +1 -0
- package/dist/migrations/202111290253.d.ts +3 -0
- package/dist/migrations/202111290253.d.ts.map +1 -0
- package/dist/migrations/202111290253.js +5 -0
- package/dist/migrations/202111290253.js.map +1 -0
- package/dist/models/backup.d.ts +22 -0
- package/dist/models/backup.d.ts.map +1 -0
- package/{models → dist/models}/backup.js +95 -192
- package/dist/models/backup.js.map +1 -0
- package/dist/models/config.d.ts +180 -0
- package/dist/models/config.d.ts.map +1 -0
- package/dist/models/config.js +758 -0
- package/dist/models/config.js.map +1 -0
- package/dist/models/crash.d.ts +74 -0
- package/dist/models/crash.d.ts.map +1 -0
- package/dist/models/crash.js +118 -0
- package/dist/models/crash.js.map +1 -0
- package/dist/models/discovery.d.ts +28 -0
- package/dist/models/discovery.d.ts.map +1 -0
- package/dist/models/discovery.js +163 -0
- package/dist/models/discovery.js.map +1 -0
- package/dist/models/email.d.ts +16 -0
- package/dist/models/email.d.ts.map +1 -0
- package/dist/models/email.js +90 -0
- package/dist/models/email.js.map +1 -0
- package/dist/models/eventlog.d.ts +77 -0
- package/dist/models/eventlog.d.ts.map +1 -0
- package/dist/models/eventlog.js +132 -0
- package/dist/models/eventlog.js.map +1 -0
- package/dist/models/expression.d.ts +54 -0
- package/dist/models/expression.d.ts.map +1 -0
- package/dist/models/expression.js +274 -0
- package/dist/models/expression.js.map +1 -0
- package/dist/models/field.d.ts +217 -0
- package/dist/models/field.d.ts.map +1 -0
- package/dist/models/field.js +619 -0
- package/dist/models/field.js.map +1 -0
- package/dist/models/fieldrepeat.d.ts +49 -0
- package/dist/models/fieldrepeat.d.ts.map +1 -0
- package/dist/models/fieldrepeat.js +88 -0
- package/dist/models/fieldrepeat.js.map +1 -0
- package/dist/models/file.d.ts +122 -0
- package/dist/models/file.d.ts.map +1 -0
- package/dist/models/file.js +224 -0
- package/dist/models/file.js.map +1 -0
- package/dist/models/form.d.ts +82 -0
- package/dist/models/form.d.ts.map +1 -0
- package/dist/models/form.js +163 -0
- package/dist/models/form.js.map +1 -0
- package/dist/models/index.d.ts +1 -0
- package/dist/models/index.d.ts.map +1 -0
- package/{models → dist/models}/index.js +42 -42
- package/dist/models/index.js.map +1 -0
- package/dist/models/layout.d.ts +34 -0
- package/dist/models/layout.d.ts.map +1 -0
- package/dist/models/layout.js +153 -0
- package/dist/models/layout.js.map +1 -0
- package/dist/models/library.d.ts +50 -0
- package/dist/models/library.d.ts.map +1 -0
- package/dist/models/library.js +129 -0
- package/dist/models/library.js.map +1 -0
- package/dist/models/pack.d.ts +89 -0
- package/dist/models/pack.d.ts.map +1 -0
- package/dist/models/pack.js +390 -0
- package/dist/models/pack.js.map +1 -0
- package/dist/models/page.d.ts +101 -0
- package/dist/models/page.d.ts.map +1 -0
- package/dist/models/page.js +223 -0
- package/dist/models/page.js.map +1 -0
- package/dist/models/plugin.d.ts +100 -0
- package/dist/models/plugin.d.ts.map +1 -0
- package/dist/models/plugin.js +204 -0
- package/dist/models/plugin.js.map +1 -0
- package/dist/models/random.d.ts +24 -0
- package/dist/models/random.d.ts.map +1 -0
- package/dist/models/random.js +186 -0
- package/dist/models/random.js.map +1 -0
- package/dist/models/role.d.ts +42 -0
- package/dist/models/role.d.ts.map +1 -0
- package/dist/models/role.js +64 -0
- package/dist/models/role.js.map +1 -0
- package/dist/models/scheduler.d.ts +18 -0
- package/dist/models/scheduler.d.ts.map +1 -0
- package/dist/models/scheduler.js +159 -0
- package/dist/models/scheduler.js.map +1 -0
- package/dist/models/table.d.ts +326 -0
- package/dist/models/table.d.ts.map +1 -0
- package/dist/models/table.js +1006 -0
- package/dist/models/table.js.map +1 -0
- package/dist/models/table_constraints.d.ts +69 -0
- package/dist/models/table_constraints.d.ts.map +1 -0
- package/dist/models/table_constraints.js +118 -0
- package/dist/models/table_constraints.js.map +1 -0
- package/dist/models/tenant.d.ts +55 -0
- package/dist/models/tenant.d.ts.map +1 -0
- package/{models → dist/models}/tenant.js +40 -63
- package/dist/models/tenant.js.map +1 -0
- package/dist/models/trigger.d.ts +133 -0
- package/dist/models/trigger.d.ts.map +1 -0
- package/dist/models/trigger.js +292 -0
- package/dist/models/trigger.js.map +1 -0
- package/dist/models/user.d.ts +235 -0
- package/dist/models/user.d.ts.map +1 -0
- package/dist/models/user.js +434 -0
- package/dist/models/user.js.map +1 -0
- package/dist/models/view.d.ts +204 -0
- package/dist/models/view.d.ts.map +1 -0
- package/dist/models/view.js +497 -0
- package/dist/models/view.js.map +1 -0
- package/dist/models/workflow.d.ts +48 -0
- package/dist/models/workflow.d.ts.map +1 -0
- package/dist/models/workflow.js +190 -0
- package/dist/models/workflow.js.map +1 -0
- package/dist/plugin-helper.d.ts +145 -0
- package/dist/plugin-helper.d.ts.map +1 -0
- package/dist/plugin-helper.js +1158 -0
- package/dist/plugin-helper.js.map +1 -0
- package/dist/plugin-testing.d.ts +3 -0
- package/dist/plugin-testing.d.ts.map +1 -0
- package/dist/plugin-testing.js +120 -0
- package/dist/plugin-testing.js.map +1 -0
- package/dist/tests/actions.test.d.ts +2 -0
- package/dist/tests/actions.test.d.ts.map +1 -0
- package/dist/tests/actions.test.js +205 -0
- package/dist/tests/actions.test.js.map +1 -0
- package/dist/tests/auxtest.test.d.ts +2 -0
- package/dist/tests/auxtest.test.d.ts.map +1 -0
- package/dist/tests/auxtest.test.js +48 -0
- package/dist/tests/auxtest.test.js.map +1 -0
- package/dist/tests/backup.test.d.ts +2 -0
- package/dist/tests/backup.test.d.ts.map +1 -0
- package/dist/tests/backup.test.js +88 -0
- package/dist/tests/backup.test.js.map +1 -0
- package/dist/tests/calc.test.d.ts +2 -0
- package/dist/tests/calc.test.d.ts.map +1 -0
- package/dist/tests/calc.test.js +231 -0
- package/dist/tests/calc.test.js.map +1 -0
- package/dist/tests/config.test.d.ts +2 -0
- package/dist/tests/config.test.d.ts.map +1 -0
- package/dist/tests/config.test.js +83 -0
- package/dist/tests/config.test.js.map +1 -0
- package/dist/tests/discover.test.d.ts +2 -0
- package/dist/tests/discover.test.d.ts.map +1 -0
- package/dist/tests/discover.test.js +106 -0
- package/dist/tests/discover.test.js.map +1 -0
- package/dist/tests/exact_views.test.d.ts +2 -0
- package/dist/tests/exact_views.test.d.ts.map +1 -0
- package/dist/tests/exact_views.test.js +511 -0
- package/dist/tests/exact_views.test.js.map +1 -0
- package/dist/tests/field.test.d.ts +2 -0
- package/dist/tests/field.test.d.ts.map +1 -0
- package/dist/tests/field.test.js +237 -0
- package/dist/tests/field.test.js.map +1 -0
- package/dist/tests/form.test.d.ts +2 -0
- package/dist/tests/form.test.d.ts.map +1 -0
- package/dist/tests/form.test.js +191 -0
- package/dist/tests/form.test.js.map +1 -0
- package/dist/tests/mocks.d.ts +111 -0
- package/dist/tests/mocks.d.ts.map +1 -0
- package/dist/tests/mocks.js +165 -0
- package/dist/tests/mocks.js.map +1 -0
- package/dist/tests/models.test.d.ts +2 -0
- package/dist/tests/models.test.d.ts.map +1 -0
- package/dist/tests/models.test.js +210 -0
- package/dist/tests/models.test.js.map +1 -0
- package/dist/tests/pack.test.d.ts +2 -0
- package/dist/tests/pack.test.d.ts.map +1 -0
- package/dist/tests/pack.test.js +331 -0
- package/dist/tests/pack.test.js.map +1 -0
- package/dist/tests/plugin.test.d.ts +2 -0
- package/dist/tests/plugin.test.d.ts.map +1 -0
- package/dist/tests/plugin.test.js +53 -0
- package/dist/tests/plugin.test.js.map +1 -0
- package/dist/tests/random.test.d.ts +2 -0
- package/dist/tests/random.test.d.ts.map +1 -0
- package/dist/tests/random.test.js +138 -0
- package/dist/tests/random.test.js.map +1 -0
- package/dist/tests/table.test.d.ts +2 -0
- package/dist/tests/table.test.d.ts.map +1 -0
- package/dist/tests/table.test.js +1048 -0
- package/dist/tests/table.test.js.map +1 -0
- package/dist/tests/tenant.test.d.ts +2 -0
- package/dist/tests/tenant.test.d.ts.map +1 -0
- package/dist/tests/tenant.test.js +45 -0
- package/dist/tests/tenant.test.js.map +1 -0
- package/dist/tests/user.test.d.ts +2 -0
- package/dist/tests/user.test.d.ts.map +1 -0
- package/dist/tests/user.test.js +190 -0
- package/dist/tests/user.test.js.map +1 -0
- package/dist/tests/view.test.d.ts +2 -0
- package/dist/tests/view.test.d.ts.map +1 -0
- package/dist/tests/view.test.js +238 -0
- package/dist/tests/view.test.js.map +1 -0
- package/dist/tests/workflow.test.d.ts +2 -0
- package/dist/tests/workflow.test.d.ts.map +1 -0
- package/dist/tests/workflow.test.js +115 -0
- package/dist/tests/workflow.test.js.map +1 -0
- package/dist/tsconfig.ref.tsbuildinfo +1 -0
- package/dist/utils.d.ts +26 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +124 -0
- package/dist/utils.js.map +1 -0
- package/package.json +37 -8
- package/base-plugin/actions.js +0 -629
- package/base-plugin/base.test.js +0 -15
- package/base-plugin/fieldviews.js +0 -192
- package/base-plugin/fileviews.js +0 -65
- package/base-plugin/types.js +0 -1025
- package/base-plugin/viewtemplates/edit.js +0 -665
- package/base-plugin/viewtemplates/feed.js +0 -434
- package/base-plugin/viewtemplates/filter.js +0 -311
- package/base-plugin/viewtemplates/list.js +0 -575
- package/base-plugin/viewtemplates/listshowlist.js +0 -292
- package/base-plugin/viewtemplates/room.js +0 -650
- package/base-plugin/viewtemplates/show.js +0 -689
- package/base-plugin/viewtemplates/viewable_fields.js +0 -714
- package/contracts.js +0 -311
- package/db/connect.js +0 -151
- package/db/db.test.js +0 -33
- package/db/fixtures.js +0 -303
- package/db/index.js +0 -60
- package/db/state.js +0 -674
- package/migrate.js +0 -99
- package/migrations/202008031500.js +0 -4
- package/migrations/202009181655.js +0 -6
- package/migrations/202009221105.js +0 -4
- package/migrations/202009301531.js +0 -7
- package/migrations/202010231444.js +0 -4
- package/migrations/202010251412.js +0 -9
- package/migrations/202101141128.js +0 -4
- package/migrations/202102091312.js +0 -19
- package/migrations/202102101624.js +0 -5
- package/migrations/202102261650.js +0 -6
- package/migrations/202106251126.js +0 -5
- package/models/config.js +0 -680
- package/models/crash.js +0 -126
- package/models/discovery.js +0 -195
- package/models/email.js +0 -92
- package/models/eventlog.js +0 -146
- package/models/expression.js +0 -264
- package/models/field.js +0 -740
- package/models/fieldrepeat.js +0 -96
- package/models/file.js +0 -234
- package/models/form.js +0 -168
- package/models/layout.js +0 -146
- package/models/library.js +0 -135
- package/models/pack.js +0 -466
- package/models/page.js +0 -255
- package/models/plugin.js +0 -219
- package/models/random.js +0 -206
- package/models/role.js +0 -94
- package/models/scheduler.js +0 -163
- package/models/table.js +0 -1211
- package/models/table_constraints.js +0 -133
- package/models/trigger.js +0 -327
- package/models/user.js +0 -503
- package/models/view.js +0 -622
- package/models/workflow.js +0 -205
- package/plugin-helper.js +0 -1291
- package/plugin-testing.js +0 -124
- package/tests/actions.test.js +0 -232
- package/tests/auxtest.test.js +0 -52
- package/tests/backup.test.js +0 -92
- package/tests/calc.test.js +0 -221
- package/tests/config.test.js +0 -91
- package/tests/discover.test.js +0 -114
- package/tests/exact_views.test.js +0 -526
- package/tests/field.test.js +0 -253
- package/tests/form.test.js +0 -198
- package/tests/mocks.js +0 -173
- package/tests/models.test.js +0 -221
- package/tests/pack.test.js +0 -350
- package/tests/plugin.test.js +0 -59
- package/tests/random.test.js +0 -154
- package/tests/table.test.js +0 -1091
- package/tests/tenant.test.js +0 -56
- package/tests/user.test.js +0 -196
- package/tests/view.test.js +0 -251
- package/tests/workflow.test.js +0 -119
- package/utils.js +0 -137
|
@@ -0,0 +1,758 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Config Variables
|
|
4
|
+
* @category saltcorn-data
|
|
5
|
+
* @module models/config
|
|
6
|
+
* @subcategory models
|
|
7
|
+
*/
|
|
8
|
+
const db = require("../db");
|
|
9
|
+
const { contract, is } = require("contractis");
|
|
10
|
+
const latestVersion = require("latest-version");
|
|
11
|
+
const { getConfigFile, configFilePath } = require("../db/connect");
|
|
12
|
+
const fs = require("fs");
|
|
13
|
+
const moment = require("moment-timezone");
|
|
14
|
+
const allTimezones = moment.tz.names();
|
|
15
|
+
const defaultTimezone = moment.tz.guess();
|
|
16
|
+
/**
|
|
17
|
+
* Config variables types
|
|
18
|
+
* @namespace
|
|
19
|
+
* @category saltcorn-data
|
|
20
|
+
*/
|
|
21
|
+
const configTypes = {
|
|
22
|
+
/** @type {object} */
|
|
23
|
+
site_name: {
|
|
24
|
+
type: "String",
|
|
25
|
+
label: "Site name",
|
|
26
|
+
default: "Saltcorn",
|
|
27
|
+
blurb: "A short string which is the name of your site",
|
|
28
|
+
},
|
|
29
|
+
/** @type {object} */
|
|
30
|
+
timezone: {
|
|
31
|
+
type: "String",
|
|
32
|
+
label: "Home Timezone",
|
|
33
|
+
default: defaultTimezone,
|
|
34
|
+
attributes: {
|
|
35
|
+
options: allTimezones,
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
/** @type {object} */
|
|
39
|
+
site_logo_id: {
|
|
40
|
+
type: "File",
|
|
41
|
+
label: "Site logo",
|
|
42
|
+
default: 0,
|
|
43
|
+
attributes: {
|
|
44
|
+
select_file_where: { min_role_read: 10, mime_super: "image" },
|
|
45
|
+
},
|
|
46
|
+
blurb: "Select a publicly accessible image file for the menu logo",
|
|
47
|
+
},
|
|
48
|
+
/** @type {object} */
|
|
49
|
+
favicon_id: {
|
|
50
|
+
type: "File",
|
|
51
|
+
label: "Favicon",
|
|
52
|
+
default: 0,
|
|
53
|
+
attributes: {
|
|
54
|
+
select_file_where: { min_role_read: 10, mime_super: "image" },
|
|
55
|
+
},
|
|
56
|
+
blurb: "Select a publicly accessible image file for the browser tab icon",
|
|
57
|
+
},
|
|
58
|
+
/** @type {object} */
|
|
59
|
+
base_url: {
|
|
60
|
+
type: "String",
|
|
61
|
+
label: "Base URL",
|
|
62
|
+
default: "",
|
|
63
|
+
onChange(val) {
|
|
64
|
+
const tenant = db.getTenantSchema();
|
|
65
|
+
const isRoot = tenant === db.connectObj.default_schema;
|
|
66
|
+
if (!isRoot && val) {
|
|
67
|
+
const { set_tenant_base_url } = require("../db/state");
|
|
68
|
+
set_tenant_base_url(tenant, val);
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
blurb: "The URL at which your site is available. For instance, https://example.com/",
|
|
72
|
+
},
|
|
73
|
+
/** @type {object} */
|
|
74
|
+
menu_items: { type: "hidden", label: "Menu items" },
|
|
75
|
+
/** @type {object} */
|
|
76
|
+
unrolled_menu_items: { type: "hidden", label: "Menu items" },
|
|
77
|
+
/** @type {object} */
|
|
78
|
+
globalSearch: { type: "hidden", label: "Global search" },
|
|
79
|
+
/** @type {object} */
|
|
80
|
+
available_packs: { type: "hidden", label: "Available packs" },
|
|
81
|
+
/** @type {object} */
|
|
82
|
+
available_packs_fetched_at: {
|
|
83
|
+
type: "Date",
|
|
84
|
+
label: "Available packs fetched",
|
|
85
|
+
},
|
|
86
|
+
/** @type {object} */
|
|
87
|
+
available_plugins: { type: "hidden", label: "Available plugins" },
|
|
88
|
+
/** @type {object} */
|
|
89
|
+
available_plugins_fetched_at: {
|
|
90
|
+
type: "Date",
|
|
91
|
+
label: "Available plugins fetched",
|
|
92
|
+
},
|
|
93
|
+
/** @type {object} */
|
|
94
|
+
home_page_by_role: { type: "hidden", label: "Home Page by Role" },
|
|
95
|
+
/** @type {object} */
|
|
96
|
+
exttables_min_role_read: {
|
|
97
|
+
type: "hidden",
|
|
98
|
+
label: "Home Page by Role",
|
|
99
|
+
default: {},
|
|
100
|
+
},
|
|
101
|
+
/** @type {object} */
|
|
102
|
+
public_home: { type: "String", label: "Public home page", default: "" },
|
|
103
|
+
/** @type {object} */
|
|
104
|
+
user_home: { type: "String", label: "User home page", default: "" },
|
|
105
|
+
/** @type {object} */
|
|
106
|
+
staff_home: { type: "String", label: "Staff home page", default: "" },
|
|
107
|
+
/** @type {object} */
|
|
108
|
+
admin_home: { type: "String", label: "Admin home page", default: "" },
|
|
109
|
+
/** @type {object} */
|
|
110
|
+
layout_by_role: { type: "hidden", label: "Layout by role", default: {} },
|
|
111
|
+
/** @type {object} */
|
|
112
|
+
allow_signup: {
|
|
113
|
+
type: "Bool",
|
|
114
|
+
label: "Allow signups",
|
|
115
|
+
default: true,
|
|
116
|
+
blurb: "Allow users to sign up for a new user account",
|
|
117
|
+
},
|
|
118
|
+
/** @type {object} */
|
|
119
|
+
allow_forgot: {
|
|
120
|
+
type: "Bool",
|
|
121
|
+
label: "Allow password reset",
|
|
122
|
+
default: false,
|
|
123
|
+
blurb: "Allow users to request a password reset email. Email must be configured.",
|
|
124
|
+
},
|
|
125
|
+
/** @type {object} */
|
|
126
|
+
login_menu: {
|
|
127
|
+
type: "Bool",
|
|
128
|
+
label: "Login in menu",
|
|
129
|
+
default: true,
|
|
130
|
+
blurb: "Show the login link in the menu",
|
|
131
|
+
},
|
|
132
|
+
/** @type {object} */
|
|
133
|
+
cookie_sessions: {
|
|
134
|
+
type: "Bool",
|
|
135
|
+
label: "Cookie sessions",
|
|
136
|
+
default: false,
|
|
137
|
+
root_only: true,
|
|
138
|
+
restart_required: true,
|
|
139
|
+
blurb: "Store sessions entirely in client cookies for higher performance",
|
|
140
|
+
},
|
|
141
|
+
/** @type {object} */
|
|
142
|
+
new_user_form: {
|
|
143
|
+
type: "View users",
|
|
144
|
+
label: "New user form",
|
|
145
|
+
default: "",
|
|
146
|
+
blurb: "A view to show to new users",
|
|
147
|
+
},
|
|
148
|
+
/** @type {object} */
|
|
149
|
+
user_settings_form: {
|
|
150
|
+
type: "View users",
|
|
151
|
+
label: "User settings form",
|
|
152
|
+
default: "",
|
|
153
|
+
blurb: "A view for users to change their custom user fields",
|
|
154
|
+
},
|
|
155
|
+
/** @type {object} */
|
|
156
|
+
login_form: {
|
|
157
|
+
type: "View users",
|
|
158
|
+
label: "Login view",
|
|
159
|
+
blurb: "A view with the login form",
|
|
160
|
+
default: "",
|
|
161
|
+
},
|
|
162
|
+
/** @type {object} */
|
|
163
|
+
signup_form: {
|
|
164
|
+
type: "View users",
|
|
165
|
+
label: "Signup view",
|
|
166
|
+
blurb: "A view with the signup form",
|
|
167
|
+
default: "",
|
|
168
|
+
},
|
|
169
|
+
/** @type {object} */
|
|
170
|
+
verification_view: {
|
|
171
|
+
type: "View users",
|
|
172
|
+
label: "Verification view",
|
|
173
|
+
blurb: "A view with the view to be emailed to users for email address verification",
|
|
174
|
+
default: "",
|
|
175
|
+
},
|
|
176
|
+
/** @type {object} */
|
|
177
|
+
elevate_verified: {
|
|
178
|
+
type: "Role",
|
|
179
|
+
label: "Elevate verified to role",
|
|
180
|
+
blurb: "Elevate users to a higher role when their email addresses have been verified",
|
|
181
|
+
},
|
|
182
|
+
/** @type {object} */
|
|
183
|
+
min_role_upload: {
|
|
184
|
+
type: "Role",
|
|
185
|
+
label: "Role to upload files",
|
|
186
|
+
default: "1",
|
|
187
|
+
required: true,
|
|
188
|
+
blurb: "User should have this role or higher to upload files with API (uploads through forms are not affected)",
|
|
189
|
+
},
|
|
190
|
+
/** @type {object} */
|
|
191
|
+
min_role_apikeygen: {
|
|
192
|
+
type: "Role",
|
|
193
|
+
label: "Role to generate API keys",
|
|
194
|
+
default: "1",
|
|
195
|
+
required: true,
|
|
196
|
+
blurb: "User should have this role or higher to generate API keys in their user settings",
|
|
197
|
+
},
|
|
198
|
+
/** @type {object} */
|
|
199
|
+
email_mask: {
|
|
200
|
+
type: "String",
|
|
201
|
+
label: "Email mask",
|
|
202
|
+
default: "",
|
|
203
|
+
blurb: "Emails used for signup must end with this string",
|
|
204
|
+
},
|
|
205
|
+
/** @type {object} */
|
|
206
|
+
installed_packs: { type: "String[]", label: "Installed packs", default: [] },
|
|
207
|
+
/** @type {object} */
|
|
208
|
+
log_sql: {
|
|
209
|
+
type: "Bool",
|
|
210
|
+
label: "Log SQL to stdout",
|
|
211
|
+
default: false,
|
|
212
|
+
onChange(val) {
|
|
213
|
+
db.set_sql_logging(val);
|
|
214
|
+
},
|
|
215
|
+
blurb: "Print all SQL statements to the standard output",
|
|
216
|
+
},
|
|
217
|
+
/** @type {object} */
|
|
218
|
+
multitenancy_enabled: {
|
|
219
|
+
type: "Bool",
|
|
220
|
+
root_only: true,
|
|
221
|
+
restart_required: true,
|
|
222
|
+
label: "Multitenancy enabled",
|
|
223
|
+
default: db.is_it_multi_tenant(),
|
|
224
|
+
onChange(val) {
|
|
225
|
+
set_multitenancy_cfg(val);
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
/** @type {object} */
|
|
229
|
+
role_to_create_tenant: {
|
|
230
|
+
type: "Role",
|
|
231
|
+
label: "Role to create tenants",
|
|
232
|
+
blurb: "Minimum user role required to create a new tenant",
|
|
233
|
+
default: "10",
|
|
234
|
+
},
|
|
235
|
+
/** @type {object} */
|
|
236
|
+
create_tenant_warning: {
|
|
237
|
+
type: "Bool",
|
|
238
|
+
label: "Create tenant warning",
|
|
239
|
+
default: true,
|
|
240
|
+
blurb: "Show a warning to users creating a tenant disclaiming warrenty of availability or security",
|
|
241
|
+
},
|
|
242
|
+
/** @type {object} */
|
|
243
|
+
tenant_template: {
|
|
244
|
+
type: "Tenant",
|
|
245
|
+
label: "New tenant template",
|
|
246
|
+
blurb: "Copy site structure for new tenants from this tenant",
|
|
247
|
+
},
|
|
248
|
+
/** @type {object} */
|
|
249
|
+
development_mode: {
|
|
250
|
+
type: "Bool",
|
|
251
|
+
label: "Development mode",
|
|
252
|
+
default: false,
|
|
253
|
+
blurb: "Disable JS/CSS asset caching, show full error to user on crash, enable editing field type",
|
|
254
|
+
},
|
|
255
|
+
/** @type {object} */
|
|
256
|
+
smtp_host: {
|
|
257
|
+
type: "String",
|
|
258
|
+
label: "SMTP host",
|
|
259
|
+
default: "",
|
|
260
|
+
blurb: "The host address of your SMTP server. For instance, smtp.postmarkapp.com",
|
|
261
|
+
},
|
|
262
|
+
/** @type {object} */
|
|
263
|
+
smtp_username: {
|
|
264
|
+
type: "String",
|
|
265
|
+
label: "SMTP username",
|
|
266
|
+
default: "",
|
|
267
|
+
blurb: "The user name to access SMTP server for sending emails.",
|
|
268
|
+
},
|
|
269
|
+
/** @type {object} */
|
|
270
|
+
smtp_password: {
|
|
271
|
+
type: "String",
|
|
272
|
+
label: "SMTP password",
|
|
273
|
+
default: "",
|
|
274
|
+
input_type: "password",
|
|
275
|
+
blurb: "The user password or app password to access SMTP server for sending emails. " +
|
|
276
|
+
"If your SMTP provider allows to create app password for using from application " +
|
|
277
|
+
"We recommends to use app password instead of user password.",
|
|
278
|
+
},
|
|
279
|
+
/** @type {object} */
|
|
280
|
+
smtp_port: {
|
|
281
|
+
type: "Integer",
|
|
282
|
+
label: "SMTP port",
|
|
283
|
+
default: "25",
|
|
284
|
+
blurb: "The port of your SMTP server",
|
|
285
|
+
},
|
|
286
|
+
/** @type {object} */
|
|
287
|
+
smtp_secure: {
|
|
288
|
+
type: "Bool",
|
|
289
|
+
label: "Force TLS",
|
|
290
|
+
default: false,
|
|
291
|
+
sublabel: "Always use TLS when connecting to server? If unchecked, TLS is used if server supports the STARTTLS extension. In most cases check this box if you are connecting to port 465. For port 587 or 25 keep it unchecked",
|
|
292
|
+
},
|
|
293
|
+
/** @type {object} */
|
|
294
|
+
email_from: {
|
|
295
|
+
type: "String",
|
|
296
|
+
label: "Email from address",
|
|
297
|
+
default: "",
|
|
298
|
+
blurb: "The email address from which emails are sent. For instance, hello@saltcorn.com",
|
|
299
|
+
},
|
|
300
|
+
/** @type {object} */
|
|
301
|
+
custom_ssl_certificate: {
|
|
302
|
+
type: "String",
|
|
303
|
+
fieldview: "textarea",
|
|
304
|
+
label: "Custom SSL certificate",
|
|
305
|
+
default: "",
|
|
306
|
+
hide_value: true,
|
|
307
|
+
},
|
|
308
|
+
/** @type {object} */
|
|
309
|
+
custom_ssl_private_key: {
|
|
310
|
+
type: "String",
|
|
311
|
+
fieldview: "textarea",
|
|
312
|
+
label: "Custom SSL private key",
|
|
313
|
+
hide_value: true,
|
|
314
|
+
default: "",
|
|
315
|
+
},
|
|
316
|
+
/** @type {object} */
|
|
317
|
+
letsencrypt: {
|
|
318
|
+
label: "LetsEncrypt enabled",
|
|
319
|
+
default: false,
|
|
320
|
+
type: "hidden",
|
|
321
|
+
root_only: true,
|
|
322
|
+
blurb: "Enable SSL certificate from Let's Encrypt for HTTPS traffic",
|
|
323
|
+
},
|
|
324
|
+
/** @type {object} */
|
|
325
|
+
timeout: {
|
|
326
|
+
type: "Integer",
|
|
327
|
+
label: "HTTP timeout (s)",
|
|
328
|
+
default: 120,
|
|
329
|
+
root_only: true,
|
|
330
|
+
restart_required: true,
|
|
331
|
+
sublabel: "Increase if you expect large uploads",
|
|
332
|
+
},
|
|
333
|
+
/** @type {object} */
|
|
334
|
+
latest_npm_version: {
|
|
335
|
+
type: "hidden",
|
|
336
|
+
label: "Latest npm version cache",
|
|
337
|
+
default: {},
|
|
338
|
+
},
|
|
339
|
+
/** @type {object} */
|
|
340
|
+
event_log_settings: {
|
|
341
|
+
type: "hidden",
|
|
342
|
+
label: "Event log settings",
|
|
343
|
+
default: {},
|
|
344
|
+
},
|
|
345
|
+
/** @type {object} */
|
|
346
|
+
custom_events: {
|
|
347
|
+
type: "hidden",
|
|
348
|
+
label: "Custom events",
|
|
349
|
+
default: [],
|
|
350
|
+
},
|
|
351
|
+
/** @type {object} */
|
|
352
|
+
page_custom_css: {
|
|
353
|
+
input_type: "code",
|
|
354
|
+
label: "Custom CSS",
|
|
355
|
+
default: "",
|
|
356
|
+
hide_value: true,
|
|
357
|
+
attributes: { mode: "text/css" },
|
|
358
|
+
},
|
|
359
|
+
/** @type {object} */
|
|
360
|
+
page_custom_html: {
|
|
361
|
+
input_type: "code",
|
|
362
|
+
label: "Custom HTML",
|
|
363
|
+
default: "",
|
|
364
|
+
hide_value: true,
|
|
365
|
+
attributes: { mode: "text/html" },
|
|
366
|
+
},
|
|
367
|
+
/** @type {object} */
|
|
368
|
+
custom_http_headers: {
|
|
369
|
+
input_type: "code",
|
|
370
|
+
label: "Custom HTTP headers",
|
|
371
|
+
blurb: "Format for each line: Header-Name: value",
|
|
372
|
+
default: "",
|
|
373
|
+
hide_value: true,
|
|
374
|
+
attributes: { mode: "message/http" },
|
|
375
|
+
},
|
|
376
|
+
/** @type {object} */
|
|
377
|
+
next_hourly_event: {
|
|
378
|
+
type: "Date",
|
|
379
|
+
label: "Next hourly event",
|
|
380
|
+
default: null,
|
|
381
|
+
},
|
|
382
|
+
/** @type {object} */
|
|
383
|
+
next_daily_event: {
|
|
384
|
+
type: "Date",
|
|
385
|
+
label: "Next daily event",
|
|
386
|
+
default: null,
|
|
387
|
+
},
|
|
388
|
+
/** @type {object} */
|
|
389
|
+
next_weekly_event: {
|
|
390
|
+
type: "Date",
|
|
391
|
+
label: "Next weekly event",
|
|
392
|
+
default: null,
|
|
393
|
+
},
|
|
394
|
+
/** @type {object} */
|
|
395
|
+
localizer_languages: {
|
|
396
|
+
type: "hidden",
|
|
397
|
+
label: "Localizer languages",
|
|
398
|
+
default: {},
|
|
399
|
+
},
|
|
400
|
+
/** @type {object} */
|
|
401
|
+
localizer_strings: {
|
|
402
|
+
type: "hidden",
|
|
403
|
+
label: "Localizer strings",
|
|
404
|
+
default: {},
|
|
405
|
+
},
|
|
406
|
+
cookie_duration: {
|
|
407
|
+
type: "Integer",
|
|
408
|
+
label: "Cookie duration (hours)",
|
|
409
|
+
sublabel: "Set to 0 for expration at the end of browser session",
|
|
410
|
+
default: 0,
|
|
411
|
+
},
|
|
412
|
+
cookie_duration_remember: {
|
|
413
|
+
type: "Integer",
|
|
414
|
+
label: "Cookie duration (hours) when remember ticked",
|
|
415
|
+
sublabel: "Set to 0 for expration at the end of browser session",
|
|
416
|
+
default: 30 * 24,
|
|
417
|
+
},
|
|
418
|
+
/** @type {object} */
|
|
419
|
+
storage_s3_enabled: {
|
|
420
|
+
type: "Bool",
|
|
421
|
+
label: "Use Amazon S3",
|
|
422
|
+
default: false,
|
|
423
|
+
sublabel: "Use Amazon S3 (or compatible) service to store files. If disabled, Saltcorn uses local disk. WARNING: Changing this may break your uploaded files!",
|
|
424
|
+
},
|
|
425
|
+
storage_s3_secure: {
|
|
426
|
+
type: "Bool",
|
|
427
|
+
label: "Use Amazon S3 Secure Connection.",
|
|
428
|
+
default: true,
|
|
429
|
+
sublabel: "Connect to Amazon S3 (or compatible) securely.",
|
|
430
|
+
},
|
|
431
|
+
/** @type {object} */
|
|
432
|
+
storage_s3_bucket: {
|
|
433
|
+
type: "String",
|
|
434
|
+
label: "Amazon S3 Bucket",
|
|
435
|
+
default: "",
|
|
436
|
+
blurb: "Name you selected for your S3 bucket in AWS.",
|
|
437
|
+
},
|
|
438
|
+
/** @type {object} */
|
|
439
|
+
storage_s3_path_prefix: {
|
|
440
|
+
type: "String",
|
|
441
|
+
label: "Amazon S3 Path Prefix",
|
|
442
|
+
default: "",
|
|
443
|
+
blurb: "Prefix you selected for your S3 bucket in AWS.",
|
|
444
|
+
},
|
|
445
|
+
/** @type {object} */
|
|
446
|
+
storage_s3_endpoint: {
|
|
447
|
+
type: "String",
|
|
448
|
+
label: "Amazon S3 Endpoint",
|
|
449
|
+
default: "s3.amazonaws.com",
|
|
450
|
+
blurb: "Hostname of your S3 Compatible Storage provider. Defaults to 's3.amazonaws.com'.",
|
|
451
|
+
},
|
|
452
|
+
/** @type {object} */
|
|
453
|
+
storage_s3_region: {
|
|
454
|
+
type: "String",
|
|
455
|
+
label: "Amazon S3 Region",
|
|
456
|
+
default: "us-east-1",
|
|
457
|
+
blurb: "AWS region you selected when creating your S3 bucket. Default ti 'us-east-1'.",
|
|
458
|
+
},
|
|
459
|
+
/** @type {object} */
|
|
460
|
+
storage_s3_access_key: {
|
|
461
|
+
type: "String",
|
|
462
|
+
label: "Amazon S3 Access Key ID",
|
|
463
|
+
default: "",
|
|
464
|
+
blurb: "Only required if you do not want to authenticate to S3 using an IAM role. Enter the Access Key ID provided by your Amazon EC2 administrator.",
|
|
465
|
+
},
|
|
466
|
+
/** @type {object} */
|
|
467
|
+
storage_s3_access_secret: {
|
|
468
|
+
type: "String",
|
|
469
|
+
input_type: "password",
|
|
470
|
+
label: "Amazon S3 Secret Access Key",
|
|
471
|
+
default: "",
|
|
472
|
+
blurb: "The secret access key associated with your Amazon S3 Access Key ID.",
|
|
473
|
+
},
|
|
474
|
+
};
|
|
475
|
+
// TODO move list of languages from code to configuration
|
|
476
|
+
const available_languages = {
|
|
477
|
+
en: "English",
|
|
478
|
+
fr: "français",
|
|
479
|
+
de: "Deutsch",
|
|
480
|
+
da: "dansk",
|
|
481
|
+
es: "Español",
|
|
482
|
+
no: "Norsk",
|
|
483
|
+
sv: "Svenska",
|
|
484
|
+
ru: "русский",
|
|
485
|
+
nl: "Nederlands",
|
|
486
|
+
pt: "Português",
|
|
487
|
+
ar: "العربية",
|
|
488
|
+
it: "Italiano",
|
|
489
|
+
};
|
|
490
|
+
/**
|
|
491
|
+
* Get Config variable value by key (contract)
|
|
492
|
+
* @function
|
|
493
|
+
* @param {string} key
|
|
494
|
+
* @param {object|undefined} def
|
|
495
|
+
* @returns {Promise<object>}
|
|
496
|
+
*/
|
|
497
|
+
const getConfig = contract(is.fun([is.str, is.maybe(is.any)], is.promise(is.any)), async (key, def) => {
|
|
498
|
+
const cfg = await db.selectMaybeOne("_sc_config", { key });
|
|
499
|
+
if (cfg && typeof cfg.value === "string")
|
|
500
|
+
return JSON.parse(cfg.value).v;
|
|
501
|
+
else if (cfg)
|
|
502
|
+
return cfg.value.v;
|
|
503
|
+
else if (def)
|
|
504
|
+
return def;
|
|
505
|
+
else
|
|
506
|
+
return configTypes[key] ? configTypes[key].default : undefined;
|
|
507
|
+
});
|
|
508
|
+
/**
|
|
509
|
+
* Returns true if key is defined in fixed_configration for tenant
|
|
510
|
+
* @param {string} key
|
|
511
|
+
* @returns {boolean}
|
|
512
|
+
*/
|
|
513
|
+
const isFixedConfig = (key) => typeof db.connectObj.fixed_configuration[key] !== "undefined" ||
|
|
514
|
+
(db.connectObj.inherit_configuration.includes(key) &&
|
|
515
|
+
db.getTenantSchema() !== db.connectObj.default_schema);
|
|
516
|
+
/**
|
|
517
|
+
* Get all config variables list
|
|
518
|
+
* @function
|
|
519
|
+
* @returns {Promise<object>}
|
|
520
|
+
*/
|
|
521
|
+
const getAllConfig = contract(is.fun([], is.promise(is.objVals(is.any))), async () => {
|
|
522
|
+
const cfgs = await db.select("_sc_config");
|
|
523
|
+
var cfg = {};
|
|
524
|
+
cfgs.forEach(({ key, value }) => {
|
|
525
|
+
if (key === "testMigration")
|
|
526
|
+
//legacy invalid cfg
|
|
527
|
+
return;
|
|
528
|
+
try {
|
|
529
|
+
cfg[key] = typeof value === "string" ? JSON.parse(value).v : value.v;
|
|
530
|
+
}
|
|
531
|
+
catch (e) {
|
|
532
|
+
console.error("config parsing error", e, { key, value }, db.getTenantSchema());
|
|
533
|
+
}
|
|
534
|
+
});
|
|
535
|
+
return cfg;
|
|
536
|
+
});
|
|
537
|
+
/**
|
|
538
|
+
* Get all config variables list
|
|
539
|
+
* If variable is not defined that default value is used
|
|
540
|
+
* @function
|
|
541
|
+
* @returns {Promise<object>}
|
|
542
|
+
*/
|
|
543
|
+
const getAllConfigOrDefaults = contract(is.fun([], is.promise(is.objVals(is.any))), async () => {
|
|
544
|
+
var cfgs = {};
|
|
545
|
+
const cfgInDB = await getAllConfig();
|
|
546
|
+
Object.entries(configTypes).forEach(([key, v]) => {
|
|
547
|
+
const value = typeof cfgInDB[key] === "undefined" ? v.default : cfgInDB[key];
|
|
548
|
+
if (!isFixedConfig(key))
|
|
549
|
+
cfgs[key] = { value, ...v };
|
|
550
|
+
});
|
|
551
|
+
return cfgs;
|
|
552
|
+
});
|
|
553
|
+
/**
|
|
554
|
+
* Set config variable value by key
|
|
555
|
+
* @function
|
|
556
|
+
* @param {string} key
|
|
557
|
+
* @param {object} value
|
|
558
|
+
* @returns {Promise<void>}
|
|
559
|
+
*/
|
|
560
|
+
// TODO move db specific to pg/sqlite
|
|
561
|
+
const setConfig = contract(is.fun([is.str, is.any], is.promise(is.undefined)), async (key, value) => {
|
|
562
|
+
if (db.isSQLite)
|
|
563
|
+
await db.query(`insert into ${db.getTenantSchemaPrefix()}_sc_config(key, value) values($key, json($value))
|
|
564
|
+
on conflict (key) do update set value = json($value)`, { $key: key, $value: JSON.stringify({ v: value }) });
|
|
565
|
+
else
|
|
566
|
+
await db.query(`insert into ${db.getTenantSchemaPrefix()}_sc_config(key, value) values($1, $2)
|
|
567
|
+
on conflict (key) do update set value = $2`, [key, { v: value }]);
|
|
568
|
+
if (configTypes[key] && configTypes[key].onChange)
|
|
569
|
+
configTypes[key].onChange(value);
|
|
570
|
+
});
|
|
571
|
+
/**
|
|
572
|
+
* Delete config variable
|
|
573
|
+
* @function
|
|
574
|
+
* @param {string} key
|
|
575
|
+
* @returns {Promise<void>}
|
|
576
|
+
*/
|
|
577
|
+
const deleteConfig = contract(is.fun(is.str, is.promise(is.undefined)), async (key) => {
|
|
578
|
+
await db.deleteWhere("_sc_config", { key });
|
|
579
|
+
});
|
|
580
|
+
/**
|
|
581
|
+
* Remove from menu
|
|
582
|
+
* @function
|
|
583
|
+
* @param {object} item
|
|
584
|
+
* @returns {Promise<void>}
|
|
585
|
+
*/
|
|
586
|
+
const remove_from_menu = contract(is.fun(is.obj({
|
|
587
|
+
name: is.str,
|
|
588
|
+
type: is.one_of(["View", "Page"]),
|
|
589
|
+
}), is.promise(is.undefined)), async (item) => {
|
|
590
|
+
const { getState } = require("../db/state");
|
|
591
|
+
const current_menu = getState().getConfigCopy("menu_items", []);
|
|
592
|
+
const new_menu = current_menu.filter((menuitem) => !(item.type === menuitem.type &&
|
|
593
|
+
(item.type === "View"
|
|
594
|
+
? menuitem.viewname === item.name
|
|
595
|
+
: menuitem.pagename === item.name)));
|
|
596
|
+
await save_menu_items(new_menu);
|
|
597
|
+
});
|
|
598
|
+
const save_menu_items = async (menu_items) => {
|
|
599
|
+
const { getState } = require("../db/state");
|
|
600
|
+
const Table = require("./table");
|
|
601
|
+
const { jsexprToWhere, get_expression_function } = require("./expression");
|
|
602
|
+
const unroll = async (items) => {
|
|
603
|
+
const unrolled_menu_items = [];
|
|
604
|
+
for (const item of items) {
|
|
605
|
+
if (item.type === "Dynamic") {
|
|
606
|
+
const table = Table.findOne({ name: item.dyn_table });
|
|
607
|
+
const fields = await table.getFields();
|
|
608
|
+
const where = item.dyn_include_fml
|
|
609
|
+
? jsexprToWhere(item.dyn_include_fml)
|
|
610
|
+
: {};
|
|
611
|
+
const selopts = item.dyn_order
|
|
612
|
+
? { orderBy: db.sqlsanitize(item.dyn_order) }
|
|
613
|
+
: {};
|
|
614
|
+
const rows = await table.getRows(where, selopts);
|
|
615
|
+
const fLabel = get_expression_function(item.dyn_label_fml, fields);
|
|
616
|
+
const fUrl = get_expression_function(item.dyn_url_fml, fields);
|
|
617
|
+
if (item.dyn_section_field) {
|
|
618
|
+
const section_field = fields.find((f) => f.name === item.dyn_section_field);
|
|
619
|
+
if (!section_field)
|
|
620
|
+
throw new InvalidConfiguration(`Dynamic menu section field ${item.dyn_section_field} not found`);
|
|
621
|
+
const sections = section_field.attributes.options
|
|
622
|
+
.split(",")
|
|
623
|
+
.map((s) => s.trim());
|
|
624
|
+
for (const section of sections) {
|
|
625
|
+
unrolled_menu_items.push({
|
|
626
|
+
...item,
|
|
627
|
+
label: section,
|
|
628
|
+
type: "Header",
|
|
629
|
+
subitems: rows
|
|
630
|
+
.filter((r) => r[item.dyn_section_field] === section)
|
|
631
|
+
.map((row) => ({
|
|
632
|
+
...item,
|
|
633
|
+
label: fLabel(row),
|
|
634
|
+
url: fUrl(row),
|
|
635
|
+
type: "Link",
|
|
636
|
+
})),
|
|
637
|
+
});
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
else
|
|
641
|
+
for (const row of rows) {
|
|
642
|
+
unrolled_menu_items.push({
|
|
643
|
+
...item,
|
|
644
|
+
label: fLabel(row),
|
|
645
|
+
url: fUrl(row),
|
|
646
|
+
type: "Link",
|
|
647
|
+
});
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
else if (item.subitems && item.subitems.length > 0) {
|
|
651
|
+
const subitems = await unroll(item.subitems);
|
|
652
|
+
unrolled_menu_items.push({ ...item, subitems });
|
|
653
|
+
}
|
|
654
|
+
else
|
|
655
|
+
unrolled_menu_items.push(item);
|
|
656
|
+
}
|
|
657
|
+
return unrolled_menu_items;
|
|
658
|
+
};
|
|
659
|
+
await getState().setConfig("menu_items", menu_items);
|
|
660
|
+
await getState().setConfig("unrolled_menu_items", await unroll(menu_items));
|
|
661
|
+
};
|
|
662
|
+
/**
|
|
663
|
+
* Get latest npm version
|
|
664
|
+
* @param {string} pkg
|
|
665
|
+
* @returns {Promise<string>}
|
|
666
|
+
*/
|
|
667
|
+
const get_latest_npm_version = async (pkg) => {
|
|
668
|
+
const { getState } = require("../db/state");
|
|
669
|
+
const { is_stale } = require("./pack");
|
|
670
|
+
const stored = getState().getConfig("latest_npm_version", {});
|
|
671
|
+
if (stored[pkg] && !is_stale(stored[pkg].time, 6)) {
|
|
672
|
+
return stored[pkg].version;
|
|
673
|
+
}
|
|
674
|
+
try {
|
|
675
|
+
const latest = await latestVersion(pkg);
|
|
676
|
+
const stored1 = getState().getConfigCopy("latest_npm_version", {});
|
|
677
|
+
await getState().setConfig("latest_npm_version", {
|
|
678
|
+
...stored1,
|
|
679
|
+
[pkg]: { time: new Date(), version: latest },
|
|
680
|
+
});
|
|
681
|
+
return latest;
|
|
682
|
+
}
|
|
683
|
+
catch (e) {
|
|
684
|
+
if (stored[pkg])
|
|
685
|
+
return stored[pkg].version;
|
|
686
|
+
else
|
|
687
|
+
return "";
|
|
688
|
+
}
|
|
689
|
+
};
|
|
690
|
+
/**
|
|
691
|
+
* Ensure that string is finished with /
|
|
692
|
+
* @param {string} s
|
|
693
|
+
* @returns {string}
|
|
694
|
+
*/
|
|
695
|
+
const ensure_final_slash = (s) => (s.endsWith("/") ? s : s + "/");
|
|
696
|
+
/**
|
|
697
|
+
* Get base url
|
|
698
|
+
* @param {object} req
|
|
699
|
+
* @returns {string}
|
|
700
|
+
*/
|
|
701
|
+
const get_base_url = (req) => {
|
|
702
|
+
const { getState } = require("../db/state");
|
|
703
|
+
const cfg = getState().getConfig("base_url", "");
|
|
704
|
+
if (cfg)
|
|
705
|
+
return ensure_final_slash(cfg);
|
|
706
|
+
if (!req || !req.get)
|
|
707
|
+
return "/";
|
|
708
|
+
var ports = "";
|
|
709
|
+
const host = req.get("host");
|
|
710
|
+
if (typeof host === "string") {
|
|
711
|
+
const hosts = host.split(":");
|
|
712
|
+
if (hosts.length > 1)
|
|
713
|
+
ports = `:${hosts[1]}`;
|
|
714
|
+
}
|
|
715
|
+
return `${req.protocol}://${req.hostname}${ports}/`;
|
|
716
|
+
};
|
|
717
|
+
/**
|
|
718
|
+
* Check email mask
|
|
719
|
+
* @function
|
|
720
|
+
* @param {string} email
|
|
721
|
+
* @returns {boolean}
|
|
722
|
+
*/
|
|
723
|
+
const check_email_mask = contract(is.fun(is.str, is.bool), (email) => {
|
|
724
|
+
const { getState } = require("../db/state");
|
|
725
|
+
const cfg = getState().getConfig("email_mask", "");
|
|
726
|
+
if (cfg) {
|
|
727
|
+
return email.endsWith(cfg);
|
|
728
|
+
}
|
|
729
|
+
else
|
|
730
|
+
return true;
|
|
731
|
+
});
|
|
732
|
+
/**
|
|
733
|
+
* Set multitenancy cfg flag
|
|
734
|
+
* @function
|
|
735
|
+
* @param {boolean} val
|
|
736
|
+
* @returns {void}
|
|
737
|
+
*/
|
|
738
|
+
const set_multitenancy_cfg = contract(is.fun(is.bool, is.undefined), (val) => {
|
|
739
|
+
const cfg = getConfigFile();
|
|
740
|
+
cfg.multi_tenant = val;
|
|
741
|
+
fs.writeFileSync(configFilePath, JSON.stringify(cfg, null, 2));
|
|
742
|
+
});
|
|
743
|
+
module.exports = {
|
|
744
|
+
getConfig,
|
|
745
|
+
getAllConfig,
|
|
746
|
+
setConfig,
|
|
747
|
+
getAllConfigOrDefaults,
|
|
748
|
+
deleteConfig,
|
|
749
|
+
configTypes,
|
|
750
|
+
remove_from_menu,
|
|
751
|
+
available_languages,
|
|
752
|
+
isFixedConfig,
|
|
753
|
+
get_latest_npm_version,
|
|
754
|
+
get_base_url,
|
|
755
|
+
save_menu_items,
|
|
756
|
+
check_email_mask,
|
|
757
|
+
};
|
|
758
|
+
//# sourceMappingURL=config.js.map
|