@things-factory/board-service 9.0.0-beta.8 → 9.0.0-beta.80
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-server/controllers/analyzer/analyze-integration.js +4 -4
- package/dist-server/controllers/analyzer/analyze-integration.js.map +1 -1
- package/dist-server/controllers/fonts.js +12 -9
- package/dist-server/controllers/fonts.js.map +1 -1
- package/dist-server/controllers/headless-model.d.ts +1 -1
- package/dist-server/controllers/headless-model.js +6 -6
- package/dist-server/controllers/headless-model.js.map +1 -1
- package/dist-server/controllers/headless-playlist.d.ts +1 -1
- package/dist-server/controllers/headless-playlist.js +5 -5
- package/dist-server/controllers/headless-playlist.js.map +1 -1
- package/dist-server/controllers/headless-pool-for-label.js +4 -17
- package/dist-server/controllers/headless-pool-for-label.js.map +1 -1
- package/dist-server/controllers/index.d.ts +1 -1
- package/dist-server/controllers/index.js +8 -8
- package/dist-server/controllers/index.js.map +1 -1
- package/dist-server/controllers/label-command.js +5 -5
- package/dist-server/controllers/label-command.js.map +1 -1
- package/dist-server/controllers/pdf.d.ts +9 -1
- package/dist-server/controllers/pdf.js +18 -11
- package/dist-server/controllers/pdf.js.map +1 -1
- package/dist-server/controllers/screenshot.js +14 -10
- package/dist-server/controllers/screenshot.js.map +1 -1
- package/dist-server/controllers/thumbnail.js +2 -2
- package/dist-server/controllers/thumbnail.js.map +1 -1
- package/dist-server/errors/index.d.ts +1 -1
- package/dist-server/errors/index.js +1 -1
- package/dist-server/errors/index.js.map +1 -1
- package/dist-server/errors/license-error.js +4 -2
- package/dist-server/errors/license-error.js.map +1 -1
- package/dist-server/index.d.ts +4 -4
- package/dist-server/index.js +4 -4
- package/dist-server/index.js.map +1 -1
- package/dist-server/migrations/1556862253000-SeedGroup.js +7 -4
- package/dist-server/migrations/1556862253000-SeedGroup.js.map +1 -1
- package/dist-server/routers/internal-board-view-router.js +1 -1
- package/dist-server/routers/internal-board-view-router.js.map +1 -1
- package/dist-server/routers/standalone-board-service-router.js +41 -41
- package/dist-server/routers/standalone-board-service-router.js.map +1 -1
- package/dist-server/routes.js +12 -10
- package/dist-server/routes.js.map +1 -1
- package/dist-server/service/analysis/analysis-query.js +2 -2
- package/dist-server/service/analysis/analysis-query.js.map +1 -1
- package/dist-server/service/analysis/index.d.ts +1 -1
- package/dist-server/service/analysis/index.js +2 -2
- package/dist-server/service/analysis/index.js.map +1 -1
- package/dist-server/service/board/board-history.d.ts +4 -3
- package/dist-server/service/board/board-history.js +12 -7
- package/dist-server/service/board/board-history.js.map +1 -1
- package/dist-server/service/board/board-mutation.d.ts +2 -2
- package/dist-server/service/board/board-mutation.js +107 -52
- package/dist-server/service/board/board-mutation.js.map +1 -1
- package/dist-server/service/board/board-query.d.ts +5 -5
- package/dist-server/service/board/board-query.js +35 -36
- package/dist-server/service/board/board-query.js.map +1 -1
- package/dist-server/service/board/board-subscription.d.ts +1 -1
- package/dist-server/service/board/board-subscription.js +5 -6
- package/dist-server/service/board/board-subscription.js.map +1 -1
- package/dist-server/service/board/board-type.d.ts +4 -2
- package/dist-server/service/board/board-type.js +12 -4
- package/dist-server/service/board/board-type.js.map +1 -1
- package/dist-server/service/board/board.d.ts +3 -2
- package/dist-server/service/board/board.js +12 -7
- package/dist-server/service/board/board.js.map +1 -1
- package/dist-server/service/board/event-subscriber.d.ts +5 -5
- package/dist-server/service/board/event-subscriber.js +8 -8
- package/dist-server/service/board/event-subscriber.js.map +1 -1
- package/dist-server/service/board/index.d.ts +6 -6
- package/dist-server/service/board/index.js +9 -9
- package/dist-server/service/board/index.js.map +1 -1
- package/dist-server/service/board-favorite/board-favorite-query.d.ts +1 -1
- package/dist-server/service/board-favorite/board-favorite-query.js +5 -5
- package/dist-server/service/board-favorite/board-favorite-query.js.map +1 -1
- package/dist-server/service/board-favorite/board-favorite-type.d.ts +1 -1
- package/dist-server/service/board-favorite/board-favorite-type.js +2 -2
- package/dist-server/service/board-favorite/board-favorite-type.js.map +1 -1
- package/dist-server/service/board-favorite/index.d.ts +1 -1
- package/dist-server/service/board-favorite/index.js +2 -2
- package/dist-server/service/board-favorite/index.js.map +1 -1
- package/dist-server/service/board-template/board-template-mutation.d.ts +2 -2
- package/dist-server/service/board-template/board-template-mutation.js +43 -25
- package/dist-server/service/board-template/board-template-mutation.js.map +1 -1
- package/dist-server/service/board-template/board-template-query.d.ts +2 -2
- package/dist-server/service/board-template/board-template-query.js +13 -13
- package/dist-server/service/board-template/board-template-query.js.map +1 -1
- package/dist-server/service/board-template/board-template-type.d.ts +1 -1
- package/dist-server/service/board-template/board-template-type.js +2 -2
- package/dist-server/service/board-template/board-template-type.js.map +1 -1
- package/dist-server/service/board-template/index.d.ts +3 -3
- package/dist-server/service/board-template/index.js +5 -5
- package/dist-server/service/board-template/index.js.map +1 -1
- package/dist-server/service/group/group-mutation.d.ts +2 -2
- package/dist-server/service/group/group-mutation.js +24 -15
- package/dist-server/service/group/group-mutation.js.map +1 -1
- package/dist-server/service/group/group-query.d.ts +3 -3
- package/dist-server/service/group/group-query.js +14 -14
- package/dist-server/service/group/group-query.js.map +1 -1
- package/dist-server/service/group/group-type.d.ts +1 -1
- package/dist-server/service/group/group-type.js +2 -2
- package/dist-server/service/group/group-type.js.map +1 -1
- package/dist-server/service/group/group.d.ts +1 -1
- package/dist-server/service/group/group.js +3 -3
- package/dist-server/service/group/group.js.map +1 -1
- package/dist-server/service/group/index.d.ts +3 -3
- package/dist-server/service/group/index.js +5 -5
- package/dist-server/service/group/index.js.map +1 -1
- package/dist-server/service/index.d.ts +6 -6
- package/dist-server/service/index.js +31 -31
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/permission/domain-permission-subscriber.js +3 -3
- package/dist-server/service/permission/domain-permission-subscriber.js.map +1 -1
- package/dist-server/service/permission/index.d.ts +1 -1
- package/dist-server/service/permission/index.js +2 -2
- package/dist-server/service/permission/index.js.map +1 -1
- package/dist-server/service/play-group/event-subscriber.d.ts +1 -1
- package/dist-server/service/play-group/event-subscriber.js +3 -3
- package/dist-server/service/play-group/event-subscriber.js.map +1 -1
- package/dist-server/service/play-group/index.d.ts +5 -5
- package/dist-server/service/play-group/index.js +8 -8
- package/dist-server/service/play-group/index.js.map +1 -1
- package/dist-server/service/play-group/play-group-mutation.d.ts +2 -2
- package/dist-server/service/play-group/play-group-mutation.js +34 -21
- package/dist-server/service/play-group/play-group-mutation.js.map +1 -1
- package/dist-server/service/play-group/play-group-query.d.ts +3 -3
- package/dist-server/service/play-group/play-group-query.js +15 -15
- package/dist-server/service/play-group/play-group-query.js.map +1 -1
- package/dist-server/service/play-group/play-group-subscription.d.ts +1 -1
- package/dist-server/service/play-group/play-group-subscription.js +5 -6
- package/dist-server/service/play-group/play-group-subscription.js.map +1 -1
- package/dist-server/service/play-group/play-group-type.d.ts +1 -1
- package/dist-server/service/play-group/play-group-type.js +2 -2
- package/dist-server/service/play-group/play-group-type.js.map +1 -1
- package/dist-server/service/play-group/play-group.d.ts +1 -1
- package/dist-server/service/play-group/play-group.js +3 -3
- package/dist-server/service/play-group/play-group.js.map +1 -1
- package/dist-server/service/theme/index.d.ts +3 -3
- package/dist-server/service/theme/index.js +5 -5
- package/dist-server/service/theme/index.js.map +1 -1
- package/dist-server/service/theme/theme-mutation.d.ts +2 -2
- package/dist-server/service/theme/theme-mutation.js +39 -21
- package/dist-server/service/theme/theme-mutation.js.map +1 -1
- package/dist-server/service/theme/theme-query.d.ts +2 -2
- package/dist-server/service/theme/theme-query.js +10 -10
- package/dist-server/service/theme/theme-query.js.map +1 -1
- package/dist-server/service/theme/theme-type.d.ts +1 -1
- package/dist-server/service/theme/theme-type.js +2 -2
- package/dist-server/service/theme/theme-type.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -9
- package/views/internal-board-full-feature-view.html +0 -1
- package/views/internal-board-player-view.html +0 -1
- package/views/internal-board-service-view.html +0 -1
package/dist-server/routes.js
CHANGED
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const env_1 = require("@things-factory/env");
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
4
|
+
const shell_1 = require("@things-factory/shell");
|
|
5
|
+
const headless_pool_for_board_js_1 = require("./controllers/headless-pool-for-board.js");
|
|
6
|
+
const headless_pool_for_label_js_1 = require("./controllers/headless-pool-for-label.js");
|
|
7
|
+
const internal_board_view_router_js_1 = require("./routers/internal-board-view-router.js");
|
|
8
|
+
const standalone_board_service_router_js_1 = require("./routers/standalone-board-service-router.js");
|
|
9
|
+
const isPathBaseDomain = !env_1.config.get('subdomain');
|
|
9
10
|
process.on('bootstrap-module-global-public-route', (app, domainGlobalPublicRouter) => {
|
|
10
|
-
(0,
|
|
11
|
-
(0,
|
|
12
|
-
domainGlobalPublicRouter.use('',
|
|
11
|
+
(0, headless_pool_for_label_js_1.getHeadlessPool)();
|
|
12
|
+
(0, headless_pool_for_board_js_1.getHeadlessPool)();
|
|
13
|
+
domainGlobalPublicRouter.use('', internal_board_view_router_js_1.internalBoardViewRouter.routes(), internal_board_view_router_js_1.internalBoardViewRouter.allowedMethods());
|
|
13
14
|
});
|
|
14
15
|
process.on('bootstrap-module-domain-private-route', (app, domainPrivateRouter) => {
|
|
15
16
|
if (isPathBaseDomain) {
|
|
16
|
-
|
|
17
|
+
const domainType = 'domain';
|
|
18
|
+
domainPrivateRouter.use(`/${(0, shell_1.getRoutePrefixForDomainType)()}/:domain`, standalone_board_service_router_js_1.standaloneBoardServiceRouter.routes(), standalone_board_service_router_js_1.standaloneBoardServiceRouter.allowedMethods());
|
|
17
19
|
}
|
|
18
20
|
else {
|
|
19
|
-
domainPrivateRouter.use('',
|
|
21
|
+
domainPrivateRouter.use('', standalone_board_service_router_js_1.standaloneBoardServiceRouter.routes(), standalone_board_service_router_js_1.standaloneBoardServiceRouter.allowedMethods());
|
|
20
22
|
}
|
|
21
23
|
});
|
|
22
24
|
//# sourceMappingURL=routes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../server/routes.ts"],"names":[],"mappings":";;AAAA,6CAA4C;AAC5C,
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../server/routes.ts"],"names":[],"mappings":";;AAAA,6CAA4C;AAC5C,iDAAmE;AACnE,yFAAqG;AACrG,yFAAqG;AACrG,2FAAiF;AACjF,qGAA2F;AAE3F,MAAM,gBAAgB,GAAG,CAAC,YAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;AAEjD,OAAO,CAAC,EAAE,CAAC,sCAA6C,EAAE,CAAC,GAAG,EAAE,wBAAwB,EAAE,EAAE;IAC1F,IAAA,4CAAuB,GAAE,CAAA;IACzB,IAAA,4CAAuB,GAAE,CAAA;IACzB,wBAAwB,CAAC,GAAG,CAAC,EAAE,EAAE,uDAAuB,CAAC,MAAM,EAAE,EAAE,uDAAuB,CAAC,cAAc,EAAE,CAAC,CAAA;AAC9G,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,uCAA8C,EAAE,CAAC,GAAG,EAAE,mBAAmB,EAAE,EAAE;IACtF,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,QAAQ,CAAA;QAC3B,mBAAmB,CAAC,GAAG,CACrB,IAAI,IAAA,mCAA2B,GAAE,UAAU,EAC3C,iEAA4B,CAAC,MAAM,EAAE,EACrC,iEAA4B,CAAC,cAAc,EAAE,CAC9C,CAAA;IACH,CAAC;SAAM,CAAC;QACN,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,iEAA4B,CAAC,MAAM,EAAE,EAAE,iEAA4B,CAAC,cAAc,EAAE,CAAC,CAAA;IACnH,CAAC;AACH,CAAC,CAAC,CAAA","sourcesContent":["import { config } from '@things-factory/env'\nimport { getRoutePrefixForDomainType } from '@things-factory/shell'\nimport { getHeadlessPool as getHeadlessPoolForBoard } from './controllers/headless-pool-for-board.js'\nimport { getHeadlessPool as getHeadlessPoolForLabel } from './controllers/headless-pool-for-label.js'\nimport { internalBoardViewRouter } from './routers/internal-board-view-router.js'\nimport { standaloneBoardServiceRouter } from './routers/standalone-board-service-router.js'\n\nconst isPathBaseDomain = !config.get('subdomain')\n\nprocess.on('bootstrap-module-global-public-route' as any, (app, domainGlobalPublicRouter) => {\n getHeadlessPoolForLabel()\n getHeadlessPoolForBoard()\n domainGlobalPublicRouter.use('', internalBoardViewRouter.routes(), internalBoardViewRouter.allowedMethods())\n})\n\nprocess.on('bootstrap-module-domain-private-route' as any, (app, domainPrivateRouter) => {\n if (isPathBaseDomain) {\n const domainType = 'domain'\n domainPrivateRouter.use(\n `/${getRoutePrefixForDomainType()}/:domain`,\n standaloneBoardServiceRouter.routes(),\n standaloneBoardServiceRouter.allowedMethods()\n )\n } else {\n domainPrivateRouter.use('', standaloneBoardServiceRouter.routes(), standaloneBoardServiceRouter.allowedMethods())\n }\n})\n"]}
|
|
@@ -4,11 +4,11 @@ exports.IntegrationAnalysisQuery = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const type_graphql_1 = require("type-graphql");
|
|
6
6
|
const shell_1 = require("@things-factory/shell");
|
|
7
|
-
const
|
|
7
|
+
const analyze_integration_js_1 = require("../../controllers/analyzer/analyze-integration.js");
|
|
8
8
|
let IntegrationAnalysisQuery = class IntegrationAnalysisQuery {
|
|
9
9
|
async integrationAnalysis(context) {
|
|
10
10
|
const { domain } = context.state;
|
|
11
|
-
return await (0,
|
|
11
|
+
return await (0, analyze_integration_js_1.analyzeBoardIntegration)(domain);
|
|
12
12
|
}
|
|
13
13
|
};
|
|
14
14
|
exports.IntegrationAnalysisQuery = IntegrationAnalysisQuery;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis-query.js","sourceRoot":"","sources":["../../../server/service/analysis/analysis-query.ts"],"names":[],"mappings":";;;;AAAA,+CAAmD;AACnD,iDAAoD;AACpD,
|
|
1
|
+
{"version":3,"file":"analysis-query.js","sourceRoot":"","sources":["../../../server/service/analysis/analysis-query.ts"],"names":[],"mappings":";;;;AAAA,+CAAmD;AACnD,iDAAoD;AACpD,8FAA2F;AAGpF,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAE7B,AAAN,KAAK,CAAC,mBAAmB,CAAQ,OAAwB;QACvD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,OAAO,MAAM,IAAA,gDAAuB,EAAC,MAAM,CAAC,CAAA;IAC9C,CAAC;CACF,CAAA;AAPY,4DAAwB;AAE7B;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;IACtD,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;mEAI/B;mCANU,wBAAwB;IADpC,IAAA,uBAAQ,GAAE;GACE,wBAAwB,CAOpC","sourcesContent":["import { Resolver, Query, Ctx } from 'type-graphql'\nimport { ScalarObject } from '@things-factory/shell'\nimport { analyzeBoardIntegration } from '../../controllers/analyzer/analyze-integration.js'\n\n@Resolver()\nexport class IntegrationAnalysisQuery {\n @Query(returns => ScalarObject, { description: 'To fetch integration Analyses' })\n async integrationAnalysis(@Ctx() context: ResolverContext): Promise<any> {\n const { domain } = context.state\n\n return await analyzeBoardIntegration(domain)\n }\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { IntegrationAnalysisQuery } from './analysis-query';
|
|
1
|
+
import { IntegrationAnalysisQuery } from './analysis-query.js';
|
|
2
2
|
export declare const resolvers: (typeof IntegrationAnalysisQuery)[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resolvers = void 0;
|
|
4
|
-
const
|
|
5
|
-
exports.resolvers = [
|
|
4
|
+
const analysis_query_js_1 = require("./analysis-query.js");
|
|
5
|
+
exports.resolvers = [analysis_query_js_1.IntegrationAnalysisQuery];
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/analysis/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/analysis/index.ts"],"names":[],"mappings":";;;AAAA,2DAA8D;AAEjD,QAAA,SAAS,GAAG,CAAC,4CAAwB,CAAC,CAAA","sourcesContent":["import { IntegrationAnalysisQuery } from './analysis-query.js'\n\nexport const resolvers = [IntegrationAnalysisQuery]\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { HistoryActionType, HistoryEntityInterface } from '@operato/typeorm-history';
|
|
2
2
|
import { User } from '@things-factory/auth-base';
|
|
3
3
|
import { Domain } from '@things-factory/shell';
|
|
4
|
-
import { Board } from './board';
|
|
5
|
-
import { Group } from '../group/group';
|
|
6
|
-
import { PlayGroup } from '../play-group/play-group';
|
|
4
|
+
import { Board } from './board.js';
|
|
5
|
+
import { Group } from '../group/group.js';
|
|
6
|
+
import { PlayGroup } from '../play-group/play-group.js';
|
|
7
7
|
export declare class BoardHistory implements HistoryEntityInterface<Board> {
|
|
8
8
|
readonly id: string;
|
|
9
9
|
version?: number;
|
|
@@ -11,6 +11,7 @@ export declare class BoardHistory implements HistoryEntityInterface<Board> {
|
|
|
11
11
|
domainId?: string;
|
|
12
12
|
name?: string;
|
|
13
13
|
description?: string;
|
|
14
|
+
type?: 'main' | 'sub' | 'popup';
|
|
14
15
|
model?: string;
|
|
15
16
|
thumbnail?: string;
|
|
16
17
|
group?: Group;
|
|
@@ -8,8 +8,8 @@ const typeorm_history_1 = require("@operato/typeorm-history");
|
|
|
8
8
|
const auth_base_1 = require("@things-factory/auth-base");
|
|
9
9
|
const shell_1 = require("@things-factory/shell");
|
|
10
10
|
const env_1 = require("@things-factory/env");
|
|
11
|
-
const
|
|
12
|
-
const
|
|
11
|
+
const group_js_1 = require("../group/group.js");
|
|
12
|
+
const play_group_js_1 = require("../play-group/play-group.js");
|
|
13
13
|
const ORMCONFIG = env_1.config.get('ormconfig', {});
|
|
14
14
|
const DATABASE_TYPE = ORMCONFIG.type;
|
|
15
15
|
let BoardHistory = class BoardHistory {
|
|
@@ -47,6 +47,11 @@ tslib_1.__decorate([
|
|
|
47
47
|
(0, type_graphql_1.Field)({ nullable: true }),
|
|
48
48
|
tslib_1.__metadata("design:type", String)
|
|
49
49
|
], BoardHistory.prototype, "description", void 0);
|
|
50
|
+
tslib_1.__decorate([
|
|
51
|
+
(0, typeorm_1.Column)({ nullable: true, default: 'main' }),
|
|
52
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
53
|
+
tslib_1.__metadata("design:type", String)
|
|
54
|
+
], BoardHistory.prototype, "type", void 0);
|
|
50
55
|
tslib_1.__decorate([
|
|
51
56
|
(0, typeorm_1.Column)({
|
|
52
57
|
nullable: true,
|
|
@@ -78,17 +83,17 @@ tslib_1.__decorate([
|
|
|
78
83
|
tslib_1.__metadata("design:type", String)
|
|
79
84
|
], BoardHistory.prototype, "thumbnail", void 0);
|
|
80
85
|
tslib_1.__decorate([
|
|
81
|
-
(0, typeorm_1.ManyToOne)(type =>
|
|
82
|
-
(0, type_graphql_1.Field)(type =>
|
|
83
|
-
tslib_1.__metadata("design:type",
|
|
86
|
+
(0, typeorm_1.ManyToOne)(type => group_js_1.Group, group => group.boards),
|
|
87
|
+
(0, type_graphql_1.Field)(type => group_js_1.Group, { nullable: true }),
|
|
88
|
+
tslib_1.__metadata("design:type", group_js_1.Group)
|
|
84
89
|
], BoardHistory.prototype, "group", void 0);
|
|
85
90
|
tslib_1.__decorate([
|
|
86
91
|
(0, typeorm_1.RelationId)((board) => board.group),
|
|
87
92
|
tslib_1.__metadata("design:type", String)
|
|
88
93
|
], BoardHistory.prototype, "groupId", void 0);
|
|
89
94
|
tslib_1.__decorate([
|
|
90
|
-
(0, typeorm_1.ManyToMany)(type =>
|
|
91
|
-
(0, type_graphql_1.Field)(type => [
|
|
95
|
+
(0, typeorm_1.ManyToMany)(type => play_group_js_1.PlayGroup, playGroup => playGroup.boards),
|
|
96
|
+
(0, type_graphql_1.Field)(type => [play_group_js_1.PlayGroup], { nullable: true }),
|
|
92
97
|
tslib_1.__metadata("design:type", Array)
|
|
93
98
|
], BoardHistory.prototype, "playGroups", void 0);
|
|
94
99
|
tslib_1.__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board-history.js","sourceRoot":"","sources":["../../../server/service/board/board-history.ts"],"names":[],"mappings":";;;;AAAA,+CAAoD;AACpD,qCAA0G;AAE1G,8DAKiC;AACjC,yDAAgD;AAChD,iDAA8C;AAC9C,6CAA4C;AAG5C,
|
|
1
|
+
{"version":3,"file":"board-history.js","sourceRoot":"","sources":["../../../server/service/board/board-history.ts"],"names":[],"mappings":"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","sourcesContent":["import { Field, ID, ObjectType } from 'type-graphql'\nimport { Column, Entity, Index, ManyToOne, ManyToMany, PrimaryGeneratedColumn, RelationId } from 'typeorm'\n\nimport {\n HistoryActionColumn,\n HistoryActionType,\n HistoryEntityInterface,\n HistoryOriginalIdColumn\n} from '@operato/typeorm-history'\nimport { User } from '@things-factory/auth-base'\nimport { Domain } from '@things-factory/shell'\nimport { config } from '@things-factory/env'\n\nimport { Board } from './board.js'\nimport { Group } from '../group/group.js'\nimport { PlayGroup } from '../play-group/play-group.js'\n\nconst ORMCONFIG = config.get('ormconfig', {})\nconst DATABASE_TYPE = ORMCONFIG.type\n\n@Entity()\n@Index('ix_board_history_0', (boardHistory: BoardHistory) => [boardHistory.originalId, boardHistory.version], {\n unique: true\n})\n@ObjectType({ description: 'History Entity of Board' })\nexport class BoardHistory implements HistoryEntityInterface<Board> {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @Column({ nullable: true, default: 1 })\n @Field({ nullable: true })\n version?: number = 1\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true })\n domain?: Domain\n\n @RelationId((board: Board) => board.domain)\n domainId?: string\n\n @Column()\n @Field()\n name?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n description?: string\n\n @Column({ nullable: true, default: 'main' })\n @Field({ nullable: true })\n type?: 'main' | 'sub' | 'popup'\n\n @Column({\n nullable: true,\n type:\n DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? 'longtext'\n : DATABASE_TYPE == 'oracle'\n ? 'clob'\n : DATABASE_TYPE == 'mssql'\n ? 'nvarchar'\n : 'varchar',\n length: DATABASE_TYPE == 'mssql' ? 'MAX' : undefined\n })\n @Field({ nullable: true })\n model?: string\n\n @Column({\n nullable: true,\n type:\n DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? 'longtext'\n : DATABASE_TYPE == 'oracle'\n ? 'clob'\n : DATABASE_TYPE == 'mssql'\n ? 'nvarchar'\n : 'varchar',\n length: DATABASE_TYPE == 'mssql' ? 'MAX' : undefined\n })\n @Field({ nullable: true })\n thumbnail?: string\n\n @ManyToOne(type => Group, group => group.boards)\n @Field(type => Group, { nullable: true })\n group?: Group\n\n @RelationId((board: Board) => board.group)\n groupId?: string\n\n @ManyToMany(type => PlayGroup, playGroup => playGroup.boards)\n @Field(type => [PlayGroup], { nullable: true })\n playGroups?: PlayGroup[]\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n createdAt?: Date\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((board: Board) => board.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((board: Board) => board.updater)\n updaterId?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n deletedAt?: Date\n\n @HistoryOriginalIdColumn()\n public originalId!: string\n\n @HistoryActionColumn({\n nullable: false,\n type:\n DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? 'enum'\n : DATABASE_TYPE == 'oracle'\n ? 'varchar2'\n : DATABASE_TYPE == 'mssql'\n ? 'nvarchar'\n : 'varchar',\n enum:\n DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? HistoryActionType\n : undefined,\n length: DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb' ? undefined : 10\n })\n public action!: HistoryActionType\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { FileUpload } from 'graphql-upload/GraphQLUpload.js';
|
|
2
|
-
import { Board } from './board';
|
|
3
|
-
import { BoardPatch, NewBoard } from './board-type';
|
|
2
|
+
import { Board } from './board.js';
|
|
3
|
+
import { BoardPatch, NewBoard } from './board-type.js';
|
|
4
4
|
export declare class BoardMutation {
|
|
5
5
|
createBoard(board: NewBoard, context: ResolverContext): Promise<Board>;
|
|
6
6
|
cloneBoard(id: string, patch: BoardPatch, targetSubdomain: string, targetGroupId: string, context: ResolverContext): Promise<Board>;
|
|
@@ -6,11 +6,11 @@ const type_graphql_1 = require("type-graphql");
|
|
|
6
6
|
const typeorm_1 = require("typeorm");
|
|
7
7
|
const GraphQLUpload_js_1 = tslib_1.__importDefault(require("graphql-upload/GraphQLUpload.js"));
|
|
8
8
|
const shell_1 = require("@things-factory/shell");
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
9
|
+
const thumbnail_js_1 = require("../../controllers/thumbnail.js");
|
|
10
|
+
const group_js_1 = require("../group/group.js");
|
|
11
|
+
const board_js_1 = require("./board.js");
|
|
12
|
+
const board_history_js_1 = require("./board-history.js");
|
|
13
|
+
const board_type_js_1 = require("./board-type.js");
|
|
14
14
|
async function parseJSONFile(uploadedFile) {
|
|
15
15
|
var { createReadStream } = await uploadedFile;
|
|
16
16
|
return new Promise((resolve, reject) => {
|
|
@@ -37,8 +37,8 @@ async function parseJSONFile(uploadedFile) {
|
|
|
37
37
|
let BoardMutation = class BoardMutation {
|
|
38
38
|
async createBoard(board, context) {
|
|
39
39
|
const { domain, user, notify, tx } = context.state;
|
|
40
|
-
const repository =
|
|
41
|
-
const groupRepository =
|
|
40
|
+
const repository = (0, shell_1.getRepository)(board_js_1.Board, tx);
|
|
41
|
+
const groupRepository = (0, shell_1.getRepository)(group_js_1.Group, tx);
|
|
42
42
|
const oldBoard = await repository.findOneBy({
|
|
43
43
|
name: board.name,
|
|
44
44
|
domain: { id: domain.id }
|
|
@@ -46,27 +46,36 @@ let BoardMutation = class BoardMutation {
|
|
|
46
46
|
if (oldBoard) {
|
|
47
47
|
throw new Error(context.t('error.board name is already taken', { name: board.name }));
|
|
48
48
|
}
|
|
49
|
-
const newBoard =
|
|
50
|
-
|
|
49
|
+
const newBoard = {
|
|
50
|
+
...board
|
|
51
|
+
};
|
|
52
|
+
newBoard.thumbnail ||=
|
|
53
|
+
'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='; /* empty thumbnail */
|
|
51
54
|
if (board.groupId) {
|
|
52
55
|
newBoard.group = await groupRepository.findOneBy({
|
|
53
56
|
id: board.groupId
|
|
54
57
|
});
|
|
55
58
|
}
|
|
56
|
-
const created = await repository.save(
|
|
59
|
+
const created = await repository.save({
|
|
60
|
+
domain,
|
|
61
|
+
...newBoard,
|
|
62
|
+
state: 'draft',
|
|
63
|
+
creator: user,
|
|
64
|
+
updater: user
|
|
65
|
+
});
|
|
57
66
|
notify &&
|
|
58
67
|
notify({
|
|
59
68
|
mode: 'in-app',
|
|
60
69
|
title: `Board '${created.name}' created`,
|
|
61
70
|
body: `Board '${created.name}' created by ${user.name}\n${created.description}`,
|
|
62
|
-
url: (0, shell_1.getRedirectSubdomainPath)(context, domain
|
|
71
|
+
url: (0, shell_1.getRedirectSubdomainPath)(context, domain, `/board-viewer/${created.id}`)
|
|
63
72
|
});
|
|
64
73
|
return created;
|
|
65
74
|
}
|
|
66
75
|
async cloneBoard(id, patch, targetSubdomain, targetGroupId, context) {
|
|
67
76
|
const { domain, user, notify, tx } = context.state;
|
|
68
77
|
const { t } = context;
|
|
69
|
-
const repository =
|
|
78
|
+
const repository = (0, shell_1.getRepository)(board_js_1.Board, tx);
|
|
70
79
|
const board = await repository.findOneBy({ domain: { id: (0, typeorm_1.In)([domain.id, domain.parentId].filter(Boolean)) }, id });
|
|
71
80
|
if (!patch.name || (patch.name == board.name && targetSubdomain == domain.subdomain)) {
|
|
72
81
|
throw t('error.name must be unique from the original board', { name: patch.name });
|
|
@@ -78,39 +87,48 @@ let BoardMutation = class BoardMutation {
|
|
|
78
87
|
}
|
|
79
88
|
var targetDomain = domain;
|
|
80
89
|
if (targetDomain && domain.subdomain != targetSubdomain) {
|
|
81
|
-
targetDomain = await
|
|
90
|
+
targetDomain = await (0, shell_1.getRepository)(shell_1.Domain, tx).findOneBy({ subdomain: targetSubdomain });
|
|
82
91
|
if (!targetDomain) {
|
|
83
92
|
throw `given subdomain(${targetSubdomain}) not found`;
|
|
84
93
|
}
|
|
85
94
|
}
|
|
86
95
|
var targetGroup = null;
|
|
87
96
|
if (targetGroupId) {
|
|
88
|
-
targetGroup = await
|
|
97
|
+
targetGroup = await (0, shell_1.getRepository)(group_js_1.Group, tx).findOneBy({ domain: { id: targetDomain.id }, id: targetGroupId });
|
|
89
98
|
if (!targetGroup) {
|
|
90
99
|
throw `given group(${targetGroupId}) in domain(${targetSubdomain}) not found`;
|
|
91
100
|
}
|
|
92
101
|
}
|
|
93
|
-
const { id: excluded
|
|
94
|
-
const cloned = await repository.save(
|
|
102
|
+
const { id: excluded, ...clone } = board;
|
|
103
|
+
const cloned = await repository.save({
|
|
104
|
+
domain: targetDomain,
|
|
105
|
+
...clone,
|
|
106
|
+
...patch,
|
|
107
|
+
group: targetGroup,
|
|
108
|
+
version: 0,
|
|
109
|
+
state: 'draft',
|
|
110
|
+
updater: user,
|
|
111
|
+
creator: user
|
|
112
|
+
});
|
|
95
113
|
notify &&
|
|
96
114
|
notify({
|
|
97
115
|
mode: 'in-app',
|
|
98
116
|
title: `Board '${cloned.name}' cloned`,
|
|
99
117
|
body: `Board '${cloned.name}' cloned by ${user.name}\n${cloned.description}`,
|
|
100
|
-
image: (0, shell_1.getRedirectSubdomainPath)(context,
|
|
101
|
-
url: (0, shell_1.getRedirectSubdomainPath)(context,
|
|
118
|
+
image: (0, shell_1.getRedirectSubdomainPath)(context, targetDomain, `/thumbnail/${cloned.id}`),
|
|
119
|
+
url: (0, shell_1.getRedirectSubdomainPath)(context, targetDomain, `/board-viewer/${cloned.id}`)
|
|
102
120
|
});
|
|
103
121
|
return cloned;
|
|
104
122
|
}
|
|
105
123
|
async updateBoard(id, patch, context) {
|
|
106
124
|
const { domain, user, notify, tx } = context.state;
|
|
107
|
-
const repository =
|
|
125
|
+
const repository = (0, shell_1.getRepository)(board_js_1.Board, tx);
|
|
108
126
|
const board = await repository.findOne({
|
|
109
127
|
where: { domain: { id: domain.id }, id },
|
|
110
128
|
relations: ['creator']
|
|
111
129
|
});
|
|
112
130
|
if (patch.model) {
|
|
113
|
-
const thumbnailPromise = (0,
|
|
131
|
+
const thumbnailPromise = (0, thumbnail_js_1.thumbnail)({
|
|
114
132
|
model: patch.model,
|
|
115
133
|
context
|
|
116
134
|
});
|
|
@@ -133,7 +151,7 @@ let BoardMutation = class BoardMutation {
|
|
|
133
151
|
.then(async (thumbnailBase64) => {
|
|
134
152
|
/* use new resource manager */
|
|
135
153
|
await (0, shell_1.getDataSource)().transaction(async (tx) => {
|
|
136
|
-
await
|
|
154
|
+
await (0, shell_1.getRepository)(board_js_1.Board, tx).save({
|
|
137
155
|
id: updated.id,
|
|
138
156
|
thumbnail: 'data:image/png;base64,' + thumbnailBase64.toString('base64')
|
|
139
157
|
});
|
|
@@ -144,9 +162,9 @@ let BoardMutation = class BoardMutation {
|
|
|
144
162
|
});
|
|
145
163
|
}
|
|
146
164
|
}
|
|
147
|
-
const { groupId
|
|
165
|
+
const { groupId, ...patched } = patch;
|
|
148
166
|
if (groupId !== undefined) {
|
|
149
|
-
const groupRepository =
|
|
167
|
+
const groupRepository = (0, shell_1.getRepository)(group_js_1.Group, tx);
|
|
150
168
|
board.group = groupId
|
|
151
169
|
? (await groupRepository.findOneBy({
|
|
152
170
|
domain: { id: domain.id },
|
|
@@ -154,20 +172,27 @@ let BoardMutation = class BoardMutation {
|
|
|
154
172
|
})) || null
|
|
155
173
|
: null;
|
|
156
174
|
}
|
|
157
|
-
const updated = await repository.save(
|
|
175
|
+
const updated = await repository.save({
|
|
176
|
+
domain,
|
|
177
|
+
...board,
|
|
178
|
+
...patched,
|
|
179
|
+
state: 'draft',
|
|
180
|
+
updater: user
|
|
181
|
+
});
|
|
158
182
|
notify &&
|
|
159
183
|
notify({
|
|
160
184
|
mode: 'in-app',
|
|
161
185
|
title: `Board '${updated.name}' updated`,
|
|
162
186
|
body: `Board '${updated.name}' updated by ${user.name}\n${updated.description}`,
|
|
163
|
-
image: (0, shell_1.getRedirectSubdomainPath)(context, domain
|
|
164
|
-
url: (0, shell_1.getRedirectSubdomainPath)(context, domain
|
|
187
|
+
image: (0, shell_1.getRedirectSubdomainPath)(context, domain, `/thumbnail/${updated.id}`),
|
|
188
|
+
url: (0, shell_1.getRedirectSubdomainPath)(context, domain, `/board-viewer/${updated.id}`)
|
|
165
189
|
});
|
|
166
190
|
return updated;
|
|
167
191
|
}
|
|
168
192
|
async releaseBoard(id, context) {
|
|
169
193
|
const { domain, user, notify, tx } = context.state;
|
|
170
|
-
const repository =
|
|
194
|
+
const repository = (0, shell_1.getRepository)(board_js_1.Board, tx);
|
|
195
|
+
const historyRepository = (0, shell_1.getRepository)(board_history_js_1.BoardHistory, tx);
|
|
171
196
|
const board = await repository.findOne({
|
|
172
197
|
where: { domain: { id: domain.id }, id },
|
|
173
198
|
relations: ['creator']
|
|
@@ -178,20 +203,33 @@ let BoardMutation = class BoardMutation {
|
|
|
178
203
|
if (board.state == 'released') {
|
|
179
204
|
throw `Board given id(${id}) is already released`;
|
|
180
205
|
}
|
|
181
|
-
|
|
206
|
+
// 히스토리에서 max version 가져오기
|
|
207
|
+
const maxHistory = await historyRepository
|
|
208
|
+
.createQueryBuilder('history')
|
|
209
|
+
.select('MAX(history.version)', 'max')
|
|
210
|
+
.where('history.originalId = :id', { id: board.id })
|
|
211
|
+
.getRawOne();
|
|
212
|
+
const nextVersion = maxHistory?.max ? Number(maxHistory.max) + 1 : 1;
|
|
213
|
+
const updated = await repository.save({
|
|
214
|
+
domain,
|
|
215
|
+
...board,
|
|
216
|
+
version: nextVersion,
|
|
217
|
+
state: 'released',
|
|
218
|
+
updater: user
|
|
219
|
+
});
|
|
182
220
|
notify &&
|
|
183
221
|
notify({
|
|
184
222
|
mode: 'in-app',
|
|
185
223
|
title: `Board '${updated.name}' released`,
|
|
186
224
|
body: `Board '${updated.name}' released by ${user.name}\n${updated.description}`,
|
|
187
|
-
image: (0, shell_1.getRedirectSubdomainPath)(context, domain
|
|
188
|
-
url: (0, shell_1.getRedirectSubdomainPath)(context, domain
|
|
225
|
+
image: (0, shell_1.getRedirectSubdomainPath)(context, domain, `/thumbnail/${updated.id}`),
|
|
226
|
+
url: (0, shell_1.getRedirectSubdomainPath)(context, domain, `/board-viewer/${updated.id}`)
|
|
189
227
|
});
|
|
190
228
|
return updated;
|
|
191
229
|
}
|
|
192
230
|
async revertBoardVersion(id, version, context) {
|
|
193
231
|
const { domain, user, notify, tx } = context.state;
|
|
194
|
-
const repository =
|
|
232
|
+
const repository = (0, shell_1.getRepository)(board_js_1.Board, tx);
|
|
195
233
|
const board = await repository.findOne({
|
|
196
234
|
where: { domain: { id: domain.id }, id },
|
|
197
235
|
relations: ['creator']
|
|
@@ -199,7 +237,7 @@ let BoardMutation = class BoardMutation {
|
|
|
199
237
|
if (!board) {
|
|
200
238
|
throw `Board with id(${id}) is not found`;
|
|
201
239
|
}
|
|
202
|
-
const historyRepository =
|
|
240
|
+
const historyRepository = (0, shell_1.getRepository)(board_history_js_1.BoardHistory, tx);
|
|
203
241
|
const boardHistory = await historyRepository.findOne({
|
|
204
242
|
where: { domain: { id: domain.id }, originalId: id, version },
|
|
205
243
|
order: { version: 'DESC' }
|
|
@@ -207,20 +245,27 @@ let BoardMutation = class BoardMutation {
|
|
|
207
245
|
if (!boardHistory) {
|
|
208
246
|
throw `Board with id:version(${id}:${version}) is not found`;
|
|
209
247
|
}
|
|
210
|
-
const updated = await repository.save(
|
|
248
|
+
const updated = await repository.save({
|
|
249
|
+
domain,
|
|
250
|
+
...board,
|
|
251
|
+
model: boardHistory.model,
|
|
252
|
+
thumbnail: boardHistory.thumbnail,
|
|
253
|
+
state: 'draft',
|
|
254
|
+
updater: user
|
|
255
|
+
});
|
|
211
256
|
notify &&
|
|
212
257
|
notify({
|
|
213
258
|
mode: 'in-app',
|
|
214
259
|
title: `Board '${updated.name}' updated`,
|
|
215
260
|
body: `Board '${updated.name}' updated by ${user.name}\n${updated.description}`,
|
|
216
|
-
image: (0, shell_1.getRedirectSubdomainPath)(context, domain
|
|
217
|
-
url: (0, shell_1.getRedirectSubdomainPath)(context, domain
|
|
261
|
+
image: (0, shell_1.getRedirectSubdomainPath)(context, domain, `/thumbnail/${updated.id}`),
|
|
262
|
+
url: (0, shell_1.getRedirectSubdomainPath)(context, domain, `/board-viewer/${updated.id}`)
|
|
218
263
|
});
|
|
219
264
|
return updated;
|
|
220
265
|
}
|
|
221
266
|
async deleteBoard(id, context) {
|
|
222
267
|
const { domain, user, notify, tx } = context.state;
|
|
223
|
-
const repository =
|
|
268
|
+
const repository = (0, shell_1.getRepository)(board_js_1.Board, tx);
|
|
224
269
|
const board = await repository.findOneBy({ domain: { id: domain.id }, id });
|
|
225
270
|
const deleted = await repository.softDelete(id);
|
|
226
271
|
notify &&
|
|
@@ -233,8 +278,8 @@ let BoardMutation = class BoardMutation {
|
|
|
233
278
|
}
|
|
234
279
|
async importBoards(groupId, files, overwrite, context) {
|
|
235
280
|
const { domain, user, notify, tx } = context.state;
|
|
236
|
-
const groupRepository =
|
|
237
|
-
const boardRepository =
|
|
281
|
+
const groupRepository = (0, shell_1.getRepository)(group_js_1.Group, tx);
|
|
282
|
+
const boardRepository = (0, shell_1.getRepository)(board_js_1.Board, tx);
|
|
238
283
|
const group = await groupRepository.findOneBy({ domain: { id: domain.id }, id: groupId });
|
|
239
284
|
if (!group) {
|
|
240
285
|
throw `Group with id(${groupId}) is not found`;
|
|
@@ -250,7 +295,10 @@ let BoardMutation = class BoardMutation {
|
|
|
250
295
|
if (overwrite && sameIdBoard.domainId != domain.id) {
|
|
251
296
|
throw `Board with id(${id}) is already taken in another domain`;
|
|
252
297
|
}
|
|
253
|
-
board =
|
|
298
|
+
board = {
|
|
299
|
+
...sameIdBoard,
|
|
300
|
+
name
|
|
301
|
+
};
|
|
254
302
|
if (sameNameBoard && sameIdBoard.id != sameNameBoard.id) {
|
|
255
303
|
/* 이름 충돌 회피 */
|
|
256
304
|
board.name = `${board.name}(${Date.now()})`;
|
|
@@ -280,9 +328,16 @@ let BoardMutation = class BoardMutation {
|
|
|
280
328
|
board.name = `${board.name}(${Date.now()})`;
|
|
281
329
|
}
|
|
282
330
|
}
|
|
283
|
-
boards.push(await boardRepository.save(
|
|
284
|
-
|
|
285
|
-
|
|
331
|
+
boards.push(await boardRepository.save({
|
|
332
|
+
...board,
|
|
333
|
+
domain,
|
|
334
|
+
description,
|
|
335
|
+
model: typeof model != 'string' ? JSON.stringify(model) : model,
|
|
336
|
+
thumbnail,
|
|
337
|
+
group,
|
|
338
|
+
state: 'draft',
|
|
339
|
+
updater: user
|
|
340
|
+
}));
|
|
286
341
|
}
|
|
287
342
|
notify &&
|
|
288
343
|
notify({
|
|
@@ -297,41 +352,41 @@ exports.BoardMutation = BoardMutation;
|
|
|
297
352
|
tslib_1.__decorate([
|
|
298
353
|
(0, type_graphql_1.Directive)('@transaction'),
|
|
299
354
|
(0, type_graphql_1.Directive)('@privilege(category: "board", privilege: "mutation", domainOwnerGranted: true)'),
|
|
300
|
-
(0, type_graphql_1.Mutation)(returns =>
|
|
355
|
+
(0, type_graphql_1.Mutation)(returns => board_js_1.Board, { description: 'To create new Board' }),
|
|
301
356
|
tslib_1.__param(0, (0, type_graphql_1.Arg)('board')),
|
|
302
357
|
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
303
358
|
tslib_1.__metadata("design:type", Function),
|
|
304
|
-
tslib_1.__metadata("design:paramtypes", [
|
|
359
|
+
tslib_1.__metadata("design:paramtypes", [board_type_js_1.NewBoard, Object]),
|
|
305
360
|
tslib_1.__metadata("design:returntype", Promise)
|
|
306
361
|
], BoardMutation.prototype, "createBoard", null);
|
|
307
362
|
tslib_1.__decorate([
|
|
308
363
|
(0, type_graphql_1.Directive)('@transaction'),
|
|
309
364
|
(0, type_graphql_1.Directive)('@privilege(category: "board", privilege: "mutation", domainOwnerGranted: true)'),
|
|
310
|
-
(0, type_graphql_1.Mutation)(returns =>
|
|
365
|
+
(0, type_graphql_1.Mutation)(returns => board_js_1.Board, { description: 'To clone a Board from existing Board' }),
|
|
311
366
|
tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
|
|
312
367
|
tslib_1.__param(1, (0, type_graphql_1.Arg)('patch')),
|
|
313
368
|
tslib_1.__param(2, (0, type_graphql_1.Arg)('targetSubdomain')),
|
|
314
369
|
tslib_1.__param(3, (0, type_graphql_1.Arg)('targetGroupId', { nullable: true })),
|
|
315
370
|
tslib_1.__param(4, (0, type_graphql_1.Ctx)()),
|
|
316
371
|
tslib_1.__metadata("design:type", Function),
|
|
317
|
-
tslib_1.__metadata("design:paramtypes", [String,
|
|
372
|
+
tslib_1.__metadata("design:paramtypes", [String, board_type_js_1.BoardPatch, String, String, Object]),
|
|
318
373
|
tslib_1.__metadata("design:returntype", Promise)
|
|
319
374
|
], BoardMutation.prototype, "cloneBoard", null);
|
|
320
375
|
tslib_1.__decorate([
|
|
321
376
|
(0, type_graphql_1.Directive)('@transaction'),
|
|
322
377
|
(0, type_graphql_1.Directive)('@privilege(category: "board", privilege: "mutation", domainOwnerGranted: true)'),
|
|
323
|
-
(0, type_graphql_1.Mutation)(returns =>
|
|
378
|
+
(0, type_graphql_1.Mutation)(returns => board_js_1.Board, { description: 'To modify Board information' }),
|
|
324
379
|
tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
|
|
325
380
|
tslib_1.__param(1, (0, type_graphql_1.Arg)('patch')),
|
|
326
381
|
tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
|
|
327
382
|
tslib_1.__metadata("design:type", Function),
|
|
328
|
-
tslib_1.__metadata("design:paramtypes", [String,
|
|
383
|
+
tslib_1.__metadata("design:paramtypes", [String, board_type_js_1.BoardPatch, Object]),
|
|
329
384
|
tslib_1.__metadata("design:returntype", Promise)
|
|
330
385
|
], BoardMutation.prototype, "updateBoard", null);
|
|
331
386
|
tslib_1.__decorate([
|
|
332
387
|
(0, type_graphql_1.Directive)('@transaction'),
|
|
333
388
|
(0, type_graphql_1.Directive)('@privilege(category: "board", privilege: "mutation", domainOwnerGranted: true)'),
|
|
334
|
-
(0, type_graphql_1.Mutation)(returns =>
|
|
389
|
+
(0, type_graphql_1.Mutation)(returns => board_js_1.Board, { description: 'To release a Board' }),
|
|
335
390
|
tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
|
|
336
391
|
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
337
392
|
tslib_1.__metadata("design:type", Function),
|
|
@@ -341,7 +396,7 @@ tslib_1.__decorate([
|
|
|
341
396
|
tslib_1.__decorate([
|
|
342
397
|
(0, type_graphql_1.Directive)('@transaction'),
|
|
343
398
|
(0, type_graphql_1.Directive)('@privilege(category: "board", privilege: "mutation", domainOwnerGranted: true)'),
|
|
344
|
-
(0, type_graphql_1.Mutation)(returns =>
|
|
399
|
+
(0, type_graphql_1.Mutation)(returns => board_js_1.Board, { description: 'To revert Board version' }),
|
|
345
400
|
tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
|
|
346
401
|
tslib_1.__param(1, (0, type_graphql_1.Arg)('version')),
|
|
347
402
|
tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
|
|
@@ -362,7 +417,7 @@ tslib_1.__decorate([
|
|
|
362
417
|
tslib_1.__decorate([
|
|
363
418
|
(0, type_graphql_1.Directive)('@transaction'),
|
|
364
419
|
(0, type_graphql_1.Directive)('@privilege(category: "board", privilege: "mutation", domainOwnerGranted: true)'),
|
|
365
|
-
(0, type_graphql_1.Mutation)(returns => [
|
|
420
|
+
(0, type_graphql_1.Mutation)(returns => [board_js_1.Board], { description: 'To import some Boards' }),
|
|
366
421
|
tslib_1.__param(0, (0, type_graphql_1.Arg)('groupId')),
|
|
367
422
|
tslib_1.__param(1, (0, type_graphql_1.Arg)('files', () => [GraphQLUpload_js_1.default])),
|
|
368
423
|
tslib_1.__param(2, (0, type_graphql_1.Arg)('overwrite')),
|
|
@@ -372,6 +427,6 @@ tslib_1.__decorate([
|
|
|
372
427
|
tslib_1.__metadata("design:returntype", Promise)
|
|
373
428
|
], BoardMutation.prototype, "importBoards", null);
|
|
374
429
|
exports.BoardMutation = BoardMutation = tslib_1.__decorate([
|
|
375
|
-
(0, type_graphql_1.Resolver)(
|
|
430
|
+
(0, type_graphql_1.Resolver)(board_js_1.Board)
|
|
376
431
|
], BoardMutation);
|
|
377
432
|
//# sourceMappingURL=board-mutation.js.map
|