taon 19.0.60 → 19.0.61
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/README.md +160 -160
- package/bin/start.js +281 -279
- package/bin/taon +6 -6
- package/bin/taon-debug +5 -5
- package/bin/taon-debug-brk +5 -5
- package/browser/README.md +24 -24
- package/browser/fesm2022/taon.mjs +81 -24
- package/browser/fesm2022/taon.mjs.map +1 -1
- package/browser/lib/base-classes/base-context.d.ts +1 -6
- package/browser/lib/base-classes/base-controller.d.ts +18 -2
- package/browser/lib/base-classes/base-repository.d.ts +1 -1
- package/browser/lib/base-classes/base.d.ts +1 -6
- package/browser/lib/create-context.d.ts +2 -12
- package/browser/lib/endpoint-context.d.ts +3 -0
- package/browser/lib/index.d.ts +5 -18
- package/browser/lib/models.d.ts +6 -0
- package/browser/lib/realtime/realtime-client.d.ts +2 -2
- package/browser/package.json +1 -1
- package/lib/base-classes/base-context.d.ts +1 -6
- package/lib/base-classes/base-controller.d.ts +18 -2
- package/lib/base-classes/base-controller.js +25 -5
- package/lib/base-classes/base-controller.js.map +1 -1
- package/lib/base-classes/base-repository.d.ts +1 -1
- package/lib/base-classes/base-repository.js +12 -6
- package/lib/base-classes/base-repository.js.map +1 -1
- package/lib/base-classes/base.d.ts +1 -6
- package/lib/build-info._auto-generated_.d.ts +1 -1
- package/lib/build-info._auto-generated_.js +1 -1
- package/lib/create-context.d.ts +2 -12
- package/lib/create-context.js +21 -11
- package/lib/create-context.js.map +1 -1
- package/lib/decorators/classes/controller-config.d.ts +0 -20
- package/lib/decorators/classes/controller-config.js +2 -18
- package/lib/decorators/classes/controller-config.js.map +1 -1
- package/lib/decorators/classes/controller-options.d.ts +0 -16
- package/lib/decorators/classes/controller-options.js +2 -17
- package/lib/decorators/classes/controller-options.js.map +1 -1
- package/lib/endpoint-context.d.ts +3 -0
- package/lib/endpoint-context.js +24 -6
- package/lib/endpoint-context.js.map +1 -1
- package/lib/env/env.angular-node-app.d.ts +2 -0
- package/lib/env/env.angular-node-app.js +4 -2
- package/lib/env/env.angular-node-app.js.map +1 -1
- package/lib/env/env.docs-webapp.d.ts +2 -0
- package/lib/env/env.docs-webapp.js +4 -2
- package/lib/env/env.docs-webapp.js.map +1 -1
- package/lib/env/env.electron-app.d.ts +2 -0
- package/lib/env/env.electron-app.js +4 -2
- package/lib/env/env.electron-app.js.map +1 -1
- package/lib/env/env.mobile-app.d.ts +2 -0
- package/lib/env/env.mobile-app.js +4 -2
- package/lib/env/env.mobile-app.js.map +1 -1
- package/lib/env/env.npm-lib-and-cli-tool.d.ts +2 -0
- package/lib/env/env.npm-lib-and-cli-tool.js +4 -2
- package/lib/env/env.npm-lib-and-cli-tool.js.map +1 -1
- package/lib/env/env.vscode-plugin.d.ts +2 -0
- package/lib/env/env.vscode-plugin.js +4 -2
- package/lib/env/env.vscode-plugin.js.map +1 -1
- package/lib/env.d.ts +2 -0
- package/lib/env.js +7 -0
- package/lib/env.js.map +1 -0
- package/lib/index.d.ts +5 -18
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/models.d.ts +6 -0
- package/lib/models.js.map +1 -1
- package/lib/realtime/realtime-client.d.ts +2 -2
- package/lib/realtime/realtime-client.js +13 -7
- package/lib/realtime/realtime-client.js.map +1 -1
- package/lib/realtime/realtime-server.js +17 -14
- package/lib/realtime/realtime-server.js.map +1 -1
- package/lib/storage.d.ts +1 -0
- package/lib/storage.js +6 -0
- package/lib/storage.js.map +1 -0
- package/lib/ui/index.js +2 -2
- package/lib/ui/taon-admin-mode-configuration/index.js +2 -2
- package/package.json +1 -1
- package/websql/README.md +24 -24
- package/websql/fesm2022/taon.mjs +75 -20
- package/websql/fesm2022/taon.mjs.map +1 -1
- package/websql/lib/base-classes/base-context.d.ts +1 -6
- package/websql/lib/base-classes/base-controller.d.ts +18 -2
- package/websql/lib/base-classes/base-repository.d.ts +1 -1
- package/websql/lib/base-classes/base.d.ts +1 -6
- package/websql/lib/create-context.d.ts +2 -12
- package/websql/lib/endpoint-context.d.ts +3 -0
- package/websql/lib/index.d.ts +5 -18
- package/websql/lib/models.d.ts +6 -0
- package/websql/lib/realtime/realtime-client.d.ts +2 -2
- package/websql/package.json +1 -1
package/websql/README.md
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
# MyLib
|
|
2
|
-
|
|
3
|
-
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
|
|
4
|
-
|
|
5
|
-
## Code scaffolding
|
|
6
|
-
|
|
7
|
-
Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
|
|
8
|
-
> Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
-
|
|
10
|
-
## Build
|
|
11
|
-
|
|
12
|
-
Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
-
|
|
14
|
-
## Publishing
|
|
15
|
-
|
|
16
|
-
After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
|
|
17
|
-
|
|
18
|
-
## Running unit tests
|
|
19
|
-
|
|
20
|
-
Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
-
|
|
22
|
-
## Further help
|
|
23
|
-
|
|
24
|
-
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
1
|
+
# MyLib
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
|
|
8
|
+
> Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
package/websql/fesm2022/taon.mjs
CHANGED
|
@@ -1554,9 +1554,7 @@ class RealtimeClient {
|
|
|
1554
1554
|
this.subsManagers = {};
|
|
1555
1555
|
this.core = core;
|
|
1556
1556
|
if (!core.ctx.disabledRealtime) {
|
|
1557
|
-
//#region @browser
|
|
1558
1557
|
this.init();
|
|
1559
|
-
//#endregion
|
|
1560
1558
|
}
|
|
1561
1559
|
}
|
|
1562
1560
|
//#region methods & getters / init
|
|
@@ -1570,12 +1568,12 @@ class RealtimeClient {
|
|
|
1570
1568
|
if (this.core.ctx.config.frontendHost &&
|
|
1571
1569
|
this.core.ctx.config.frontendHost !== '' &&
|
|
1572
1570
|
this.core.ctx.isRunningInsideDocker) {
|
|
1573
|
-
|
|
1571
|
+
Helpers.logInfo(`[${this.core.ctx.contextName}] USING FRONTEND HOST ${this.core.ctx.config.frontendHost}`);
|
|
1574
1572
|
nspPath.global = new URL(`${this.core.ctx.frontendHostUri.origin}${nspPath.global.pathname}`);
|
|
1575
1573
|
nspPath.realtime = new URL(`${this.core.ctx.frontendHostUri.origin}${nspPath.realtime.pathname}`);
|
|
1576
1574
|
}
|
|
1577
1575
|
else {
|
|
1578
|
-
|
|
1576
|
+
Helpers.logInfo(`[${this.core.ctx.contextName}] NOT USING FRONTEND HOST`);
|
|
1579
1577
|
}
|
|
1580
1578
|
this.core.ctx.logRealtime &&
|
|
1581
1579
|
console.info('[CLIENT] NAMESPACE GLOBAL ', nspPath.global.href + ` host: ${this.core.ctx.host}`);
|
|
@@ -1720,7 +1718,13 @@ to use socket realtime connection;
|
|
|
1720
1718
|
//#endregion
|
|
1721
1719
|
//#region methods & getters / get room id from
|
|
1722
1720
|
getUniqueIdentifierForConnection(options) {
|
|
1723
|
-
|
|
1721
|
+
let url;
|
|
1722
|
+
if (UtilsOs.isBrowser) {
|
|
1723
|
+
url = new URL(options.core.ctx.host);
|
|
1724
|
+
}
|
|
1725
|
+
else {
|
|
1726
|
+
url = new URL(options.core.ctx.remoteHost); // backend-to-backend use remote host
|
|
1727
|
+
}
|
|
1724
1728
|
return `${this.core.ctx.contextName}:${url.origin}|${options.roomName}|${options.property}|${options.customEvent}`;
|
|
1725
1729
|
}
|
|
1726
1730
|
}
|
|
@@ -1741,7 +1745,7 @@ class RealtimeServer {
|
|
|
1741
1745
|
}
|
|
1742
1746
|
//#region methods & getters / init
|
|
1743
1747
|
init() {
|
|
1744
|
-
//#region @
|
|
1748
|
+
//#region @browser
|
|
1745
1749
|
if (!this.core.ctx.config.frontendHost) {
|
|
1746
1750
|
console.warn(`[Taon][Realtime]
|
|
1747
1751
|
|
|
@@ -1752,6 +1756,8 @@ class RealtimeServer {
|
|
|
1752
1756
|
|
|
1753
1757
|
`);
|
|
1754
1758
|
}
|
|
1759
|
+
//#endregion
|
|
1760
|
+
//#region @websql
|
|
1755
1761
|
//#region prepare namespaces pathes
|
|
1756
1762
|
const nspPathGlobal = this.core.pathFor();
|
|
1757
1763
|
const nspPathRealtime = this.core.pathFor(Symbols.REALTIME.NAMESPACE(this.core.ctx.contextName));
|
|
@@ -1773,8 +1779,9 @@ class RealtimeServer {
|
|
|
1773
1779
|
console.info(`[backend] CREATE GLOBAL NAMESPACE: '${this.core.connectSocketBE.path()}'` +
|
|
1774
1780
|
` , path: '${nspPathGlobal.pathname}'`);
|
|
1775
1781
|
this.core.connectSocketBE.on('connection', clientSocket => {
|
|
1776
|
-
|
|
1777
|
-
`
|
|
1782
|
+
this.core.ctx.logRealtime &&
|
|
1783
|
+
console.info(`[backend] client connected to namespace "${nspPathGlobal.pathname}", ` +
|
|
1784
|
+
` host: ${this.core.ctx.host}`);
|
|
1778
1785
|
});
|
|
1779
1786
|
//#endregion
|
|
1780
1787
|
//#region prepare realtime BE socket
|
|
@@ -1789,8 +1796,9 @@ class RealtimeServer {
|
|
|
1789
1796
|
console.info(`[backend] CREATE REALTIME NAMESPACE: '${this.core.socketBE.path()}'` +
|
|
1790
1797
|
` , path: '${nspPathRealtime.pathname}' `);
|
|
1791
1798
|
this.core.socketBE.on('connection', backendSocketForClient => {
|
|
1792
|
-
|
|
1793
|
-
`
|
|
1799
|
+
this.core.ctx.logRealtime &&
|
|
1800
|
+
console.info(`[backend] client connected to namespace "${nspPathRealtime.pathname}", ` +
|
|
1801
|
+
` host: ${this.core.ctx.host}`);
|
|
1794
1802
|
backendSocketForClient.on(Symbols.REALTIME.ROOM_SUBSCRIBE_CUSTOM(this.core.ctx.contextName), roomName => {
|
|
1795
1803
|
this.core.ctx.logRealtime &&
|
|
1796
1804
|
console.info(`Joining room ${roomName} in namespace REALTIME` +
|
|
@@ -2919,6 +2927,7 @@ class EndpointContext {
|
|
|
2919
2927
|
!this.config.remoteHost.startsWith('https://')) {
|
|
2920
2928
|
Helpers.throw(`[taon-config] Your 'remoteHost' must start with http:// or https://`);
|
|
2921
2929
|
}
|
|
2930
|
+
// console.log(`config for ${this.contextName}`, this.config);
|
|
2922
2931
|
//#region resolve if skipping writing server routes
|
|
2923
2932
|
//@ts-expect-error overriding readonly
|
|
2924
2933
|
this.skipWritingServerRoutes = _.isBoolean(this.config.skipWritingServerRoutes)
|
|
@@ -2956,7 +2965,9 @@ class EndpointContext {
|
|
|
2956
2965
|
// console.log(this.config)
|
|
2957
2966
|
// }
|
|
2958
2967
|
if (!this.mode && !this.config.abstract) {
|
|
2959
|
-
|
|
2968
|
+
const errMsg = `You need to provide host or remoteHost or ` +
|
|
2969
|
+
`useIpcWhenElectron (or mark it as abstract)`;
|
|
2970
|
+
Helpers.error(`[taon] Context "${this.contextName}": ${errMsg}`, false, true);
|
|
2960
2971
|
/* */
|
|
2961
2972
|
/* */
|
|
2962
2973
|
}
|
|
@@ -3132,7 +3143,10 @@ class EndpointContext {
|
|
|
3132
3143
|
//#endregion
|
|
3133
3144
|
//#region prepare realtime
|
|
3134
3145
|
if (!this.config.abstract) {
|
|
3135
|
-
this.disabledRealtime =
|
|
3146
|
+
this.disabledRealtime = this.config.disabledRealtime;
|
|
3147
|
+
/* */
|
|
3148
|
+
/* */
|
|
3149
|
+
/* */
|
|
3136
3150
|
/* */
|
|
3137
3151
|
/* */
|
|
3138
3152
|
/* */
|
|
@@ -3964,6 +3978,18 @@ class EndpointContext {
|
|
|
3964
3978
|
});
|
|
3965
3979
|
}
|
|
3966
3980
|
//#endregion
|
|
3981
|
+
async initControllersHook(allInitedEndpointContexts) {
|
|
3982
|
+
if (this.isRunOrRevertOnlyMigrationAppStart) {
|
|
3983
|
+
return;
|
|
3984
|
+
}
|
|
3985
|
+
const allControllers = this.getClassFunByArr(Models.ClassType.CONTROLLER);
|
|
3986
|
+
for (const controllerClassFn of allControllers) {
|
|
3987
|
+
const instance = this.getInstanceBy(controllerClassFn);
|
|
3988
|
+
if (_.isFunction(instance.afterAllCtxInited)) {
|
|
3989
|
+
await instance.afterAllCtxInited(allInitedEndpointContexts);
|
|
3990
|
+
}
|
|
3991
|
+
}
|
|
3992
|
+
}
|
|
3967
3993
|
async initControllers() {
|
|
3968
3994
|
if (this.isRunOrRevertOnlyMigrationAppStart) {
|
|
3969
3995
|
return;
|
|
@@ -5085,21 +5111,22 @@ const createContext = (configFn) => {
|
|
|
5085
5111
|
//#endregion
|
|
5086
5112
|
await endpointContextRef.initClasses();
|
|
5087
5113
|
if (endpointContextRef.databaseConfig) {
|
|
5088
|
-
|
|
5114
|
+
//#region handle websql reload data
|
|
5089
5115
|
//#region @browser
|
|
5116
|
+
let keepWebsqlDbDataAfterReload = false;
|
|
5090
5117
|
keepWebsqlDbDataAfterReload =
|
|
5091
5118
|
TaonAdminService.Instance?.keepWebsqlDbDataAfterReload;
|
|
5092
|
-
|
|
5093
|
-
if (!Helpers.isNode && keepWebsqlDbDataAfterReload) {
|
|
5119
|
+
if (keepWebsqlDbDataAfterReload) {
|
|
5094
5120
|
!UtilsOs.isRunningInCliMode() &&
|
|
5095
5121
|
Helpers.info(`[taon] Keeping websql data after reload ` +
|
|
5096
5122
|
`(context=${endpointContextRef.contextName}).`);
|
|
5097
5123
|
}
|
|
5098
5124
|
else {
|
|
5099
|
-
|
|
5100
|
-
|
|
5101
|
-
`(context=${endpointContextRef.contextName}).`);
|
|
5125
|
+
Helpers.info(`[taon] Dropping all tables and data ` +
|
|
5126
|
+
`(context=${endpointContextRef.contextName}).`);
|
|
5102
5127
|
}
|
|
5128
|
+
//#endregion
|
|
5129
|
+
//#endregion
|
|
5103
5130
|
//#region TODO this may be usefull but for now
|
|
5104
5131
|
// 2 separate contexts are fine
|
|
5105
5132
|
// const shouldStartRemoteHost = endpointContextRef.mode !== 'remote-backend(tcp+udp)';
|
|
@@ -5113,15 +5140,20 @@ const createContext = (configFn) => {
|
|
|
5113
5140
|
// endpointContextRef.__contextForControllerInstanceAccess = endpointContextRemoteHostRef;
|
|
5114
5141
|
// }
|
|
5115
5142
|
//#endregion
|
|
5143
|
+
//#region run migrations tasks
|
|
5116
5144
|
if (endpointContextRef.onlyMigrationRun) {
|
|
5145
|
+
Helpers.log(`[taon] Running only migrations (context=${endpointContextRef.contextName}).`);
|
|
5117
5146
|
await endpointContextRef.dbMigrations.runAllNotCompletedMigrations();
|
|
5118
5147
|
}
|
|
5119
5148
|
else if (endpointContextRef.onlyMigrationRevertToTimestamp) {
|
|
5149
|
+
Helpers.log(`[taon] Reverting migrations to timestamp ${endpointContextRef.onlyMigrationRevertToTimestamp} (context=${endpointContextRef.contextName}).`);
|
|
5120
5150
|
await endpointContextRef.dbMigrations.revertMigrationToTimestamp(endpointContextRef.onlyMigrationRevertToTimestamp);
|
|
5121
5151
|
}
|
|
5122
5152
|
else {
|
|
5153
|
+
Helpers.log(`[taon] Running all not applied migrations (context=${endpointContextRef.contextName}).`);
|
|
5123
5154
|
await endpointContextRef.dbMigrations.runAllNotCompletedMigrations();
|
|
5124
5155
|
}
|
|
5156
|
+
//#endregion
|
|
5125
5157
|
}
|
|
5126
5158
|
resolve(endpointContextRef);
|
|
5127
5159
|
});
|
|
@@ -5641,6 +5673,11 @@ let BaseRepository = class BaseRepository extends BaseCustomRepository {
|
|
|
5641
5673
|
const deletedEntity = await this.repo.findOne({
|
|
5642
5674
|
where: { id: idOrEntity },
|
|
5643
5675
|
});
|
|
5676
|
+
if (!deletedEntity) {
|
|
5677
|
+
Helpers.warn(`[BaseRepository] Entity "${ClassHelpers.getName(this.repo.target)}" ` +
|
|
5678
|
+
`with id ${idOrEntity} not found, cannot remove`);
|
|
5679
|
+
return;
|
|
5680
|
+
}
|
|
5644
5681
|
const idCopy = deletedEntity.id;
|
|
5645
5682
|
await this.repo.remove(deletedEntity);
|
|
5646
5683
|
deletedEntity.id = idCopy;
|
|
@@ -6167,6 +6204,11 @@ function Body(name) {
|
|
|
6167
6204
|
/* */
|
|
6168
6205
|
/* */
|
|
6169
6206
|
let BaseController = class BaseController extends BaseInjector {
|
|
6207
|
+
/**
|
|
6208
|
+
* Hook that is called when taon app is inited
|
|
6209
|
+
* (all contexts are created and inited)
|
|
6210
|
+
*/
|
|
6211
|
+
async afterAllCtxInited(allContexts) { }
|
|
6170
6212
|
//#region upload form data to server
|
|
6171
6213
|
uploadFormDataToServer(formData) {
|
|
6172
6214
|
/* */
|
|
@@ -6190,11 +6232,24 @@ let BaseController = class BaseController extends BaseInjector {
|
|
|
6190
6232
|
/* */
|
|
6191
6233
|
/* */
|
|
6192
6234
|
/* */
|
|
6235
|
+
/* */
|
|
6236
|
+
/* */
|
|
6237
|
+
/* */
|
|
6238
|
+
/* */
|
|
6239
|
+
/* */
|
|
6193
6240
|
return (void 0);
|
|
6194
6241
|
}
|
|
6195
6242
|
//#endregion
|
|
6243
|
+
//#region after file upload hook
|
|
6244
|
+
/**
|
|
6245
|
+
* Hook after file is uploaded
|
|
6246
|
+
* through `uploadFormDataToServer` or `uploadLocalFileToServer`
|
|
6247
|
+
*/
|
|
6248
|
+
afterFileUploadAction(file) {
|
|
6249
|
+
// empty
|
|
6250
|
+
}
|
|
6196
6251
|
//#region upload local file to server
|
|
6197
|
-
async uploadLocalFileToServer(absFilePath) {
|
|
6252
|
+
async uploadLocalFileToServer(absFilePath, options) {
|
|
6198
6253
|
/* */
|
|
6199
6254
|
/* */
|
|
6200
6255
|
/* */
|
|
@@ -6827,5 +6882,5 @@ var Taon;
|
|
|
6827
6882
|
* Generated bundle index. Do not edit.
|
|
6828
6883
|
*/
|
|
6829
6884
|
|
|
6830
|
-
export { BaseContext, BaseController, BaseCustomRepository, BaseEntity, BaseMigration, BaseProvider, BaseRepository, CURRENT_HOST_BACKEND_PORT, CURRENT_HOST_URL, ClassHelpers, EndpointContext, Models, TAON_CONTEXT, Taon, TaonAdminService, TaonEntityKeysToOmitArr, apiPrefix, createContext, inject };
|
|
6885
|
+
export { BaseContext, BaseController, BaseCustomRepository, BaseEntity, BaseFileUploadMiddleware, BaseMigration, BaseProvider, BaseRepository, CURRENT_HOST_BACKEND_PORT, CURRENT_HOST_URL, ClassHelpers, EndpointContext, Models, TAON_CONTEXT, Taon, TaonAdminService, TaonEntityKeysToOmitArr, apiPrefix, createContext, inject };
|
|
6831
6886
|
//# sourceMappingURL=taon.mjs.map
|