@gooddata/sdk-backend-base 8.13.0-alpha.2 → 8.13.0-alpha.21
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/cachingBackend/index.js +304 -380
- package/dist/cachingBackend/index.js.map +1 -1
- package/dist/convertors/fromBackend/afm/result.js +3 -3
- package/dist/convertors/fromBackend/afm/result.js.map +1 -1
- package/dist/customBackend/execution.js +77 -92
- package/dist/customBackend/execution.js.map +1 -1
- package/dist/customBackend/index.js +78 -114
- package/dist/customBackend/index.js.map +1 -1
- package/dist/customBackend/workspace.js +39 -40
- package/dist/customBackend/workspace.js.map +1 -1
- package/dist/decoratedBackend/attributes.js +21 -22
- package/dist/decoratedBackend/attributes.js.map +1 -1
- package/dist/decoratedBackend/catalog.js +38 -50
- package/dist/decoratedBackend/catalog.js.map +1 -1
- package/dist/decoratedBackend/dashboards.js +61 -62
- package/dist/decoratedBackend/dashboards.js.map +1 -1
- package/dist/decoratedBackend/elements.js +47 -70
- package/dist/decoratedBackend/elements.js.map +1 -1
- package/dist/decoratedBackend/execution.js +62 -79
- package/dist/decoratedBackend/execution.js.map +1 -1
- package/dist/decoratedBackend/index.js +90 -104
- package/dist/decoratedBackend/index.js.map +1 -1
- package/dist/decoratedBackend/securitySettings.js +7 -8
- package/dist/decoratedBackend/securitySettings.js.map +1 -1
- package/dist/decoratedBackend/workspaceSettings.js +12 -26
- package/dist/decoratedBackend/workspaceSettings.js.map +1 -1
- package/dist/dummyBackend/index.js +347 -391
- package/dist/dummyBackend/index.js.map +1 -1
- package/dist/eventingBackend/index.js +42 -49
- package/dist/eventingBackend/index.js.map +1 -1
- package/dist/ldmFactories/builder.js +14 -16
- package/dist/ldmFactories/builder.js.map +1 -1
- package/dist/ldmFactories/catalog/attributeFactory.js +22 -32
- package/dist/ldmFactories/catalog/attributeFactory.js.map +1 -1
- package/dist/ldmFactories/catalog/dateDatasetFactory.js +25 -41
- package/dist/ldmFactories/catalog/dateDatasetFactory.js.map +1 -1
- package/dist/ldmFactories/catalog/factFactory.js +11 -19
- package/dist/ldmFactories/catalog/factFactory.js.map +1 -1
- package/dist/ldmFactories/catalog/groupFactory.js +14 -27
- package/dist/ldmFactories/catalog/groupFactory.js.map +1 -1
- package/dist/ldmFactories/catalog/measureFactory.js +15 -25
- package/dist/ldmFactories/catalog/measureFactory.js.map +1 -1
- package/dist/ldmFactories/dashboard/insightWidgetFactory.js +20 -27
- package/dist/ldmFactories/dashboard/insightWidgetFactory.js.map +1 -1
- package/dist/ldmFactories/dashboard/kpiWidgetFactory.js +24 -34
- package/dist/ldmFactories/dashboard/kpiWidgetFactory.js.map +1 -1
- package/dist/ldmFactories/dashboard/widgetFactory.js +20 -39
- package/dist/ldmFactories/dashboard/widgetFactory.js.map +1 -1
- package/dist/ldmFactories/metadata/attributeFactory.js +13 -21
- package/dist/ldmFactories/metadata/attributeFactory.js.map +1 -1
- package/dist/ldmFactories/metadata/dashboardFactory.js +7 -15
- package/dist/ldmFactories/metadata/dashboardFactory.js.map +1 -1
- package/dist/ldmFactories/metadata/dataSetFactory.js +7 -15
- package/dist/ldmFactories/metadata/dataSetFactory.js.map +1 -1
- package/dist/ldmFactories/metadata/displayFormFactory.js +13 -21
- package/dist/ldmFactories/metadata/displayFormFactory.js.map +1 -1
- package/dist/ldmFactories/metadata/factFactory.js +7 -15
- package/dist/ldmFactories/metadata/factFactory.js.map +1 -1
- package/dist/ldmFactories/metadata/factory.js +17 -23
- package/dist/ldmFactories/metadata/factory.js.map +1 -1
- package/dist/ldmFactories/metadata/measureFactory.js +13 -21
- package/dist/ldmFactories/metadata/measureFactory.js.map +1 -1
- package/dist/ldmFactories/metadata/variableFactory.js +7 -15
- package/dist/ldmFactories/metadata/variableFactory.js.map +1 -1
- package/dist/normalizingBackend/index.js +71 -96
- package/dist/normalizingBackend/index.js.map +1 -1
- package/dist/normalizingBackend/normalizer.d.ts.map +1 -1
- package/dist/normalizingBackend/normalizer.js +130 -138
- package/dist/normalizingBackend/normalizer.js.map +1 -1
- package/dist/toolkit/auth.js +47 -60
- package/dist/toolkit/auth.js.map +1 -1
- package/dist/toolkit/execution.js +40 -52
- package/dist/toolkit/execution.js.map +1 -1
- package/dist/toolkit/paging.js +77 -146
- package/dist/toolkit/paging.js.map +1 -1
- package/dist/toolkit/pluginUrlValidation.js +9 -9
- package/dist/toolkit/pluginUrlValidation.js.map +1 -1
- package/dist/workspaceSettingsBackend/index.js +23 -46
- package/dist/workspaceSettingsBackend/index.js.map +1 -1
- package/esm/cachingBackend/index.js +281 -358
- package/esm/cachingBackend/index.js.map +1 -1
- package/esm/convertors/fromBackend/afm/result.js +3 -3
- package/esm/convertors/fromBackend/afm/result.js.map +1 -1
- package/esm/customBackend/execution.js +72 -89
- package/esm/customBackend/execution.js.map +1 -1
- package/esm/customBackend/index.js +75 -112
- package/esm/customBackend/index.js.map +1 -1
- package/esm/customBackend/workspace.js +37 -39
- package/esm/customBackend/workspace.js.map +1 -1
- package/esm/decoratedBackend/attributes.js +21 -23
- package/esm/decoratedBackend/attributes.js.map +1 -1
- package/esm/decoratedBackend/catalog.js +36 -51
- package/esm/decoratedBackend/catalog.js.map +1 -1
- package/esm/decoratedBackend/dashboards.js +61 -63
- package/esm/decoratedBackend/dashboards.js.map +1 -1
- package/esm/decoratedBackend/elements.js +47 -73
- package/esm/decoratedBackend/elements.js.map +1 -1
- package/esm/decoratedBackend/execution.js +60 -81
- package/esm/decoratedBackend/execution.js.map +1 -1
- package/esm/decoratedBackend/index.js +88 -103
- package/esm/decoratedBackend/index.js.map +1 -1
- package/esm/decoratedBackend/securitySettings.js +7 -9
- package/esm/decoratedBackend/securitySettings.js.map +1 -1
- package/esm/decoratedBackend/workspaceSettings.js +12 -27
- package/esm/decoratedBackend/workspaceSettings.js.map +1 -1
- package/esm/dummyBackend/index.js +342 -387
- package/esm/dummyBackend/index.js.map +1 -1
- package/esm/eventingBackend/index.js +37 -45
- package/esm/eventingBackend/index.js.map +1 -1
- package/esm/ldmFactories/builder.js +14 -17
- package/esm/ldmFactories/builder.js.map +1 -1
- package/esm/ldmFactories/catalog/attributeFactory.js +15 -27
- package/esm/ldmFactories/catalog/attributeFactory.js.map +1 -1
- package/esm/ldmFactories/catalog/dateDatasetFactory.js +18 -37
- package/esm/ldmFactories/catalog/dateDatasetFactory.js.map +1 -1
- package/esm/ldmFactories/catalog/factFactory.js +5 -15
- package/esm/ldmFactories/catalog/factFactory.js.map +1 -1
- package/esm/ldmFactories/catalog/groupFactory.js +11 -27
- package/esm/ldmFactories/catalog/groupFactory.js.map +1 -1
- package/esm/ldmFactories/catalog/measureFactory.js +9 -21
- package/esm/ldmFactories/catalog/measureFactory.js.map +1 -1
- package/esm/ldmFactories/dashboard/insightWidgetFactory.js +16 -25
- package/esm/ldmFactories/dashboard/insightWidgetFactory.js.map +1 -1
- package/esm/ldmFactories/dashboard/kpiWidgetFactory.js +19 -31
- package/esm/ldmFactories/dashboard/kpiWidgetFactory.js.map +1 -1
- package/esm/ldmFactories/dashboard/widgetFactory.js +19 -39
- package/esm/ldmFactories/dashboard/widgetFactory.js.map +1 -1
- package/esm/ldmFactories/metadata/attributeFactory.js +9 -19
- package/esm/ldmFactories/metadata/attributeFactory.js.map +1 -1
- package/esm/ldmFactories/metadata/dashboardFactory.js +3 -13
- package/esm/ldmFactories/metadata/dashboardFactory.js.map +1 -1
- package/esm/ldmFactories/metadata/dataSetFactory.js +3 -13
- package/esm/ldmFactories/metadata/dataSetFactory.js.map +1 -1
- package/esm/ldmFactories/metadata/displayFormFactory.js +9 -19
- package/esm/ldmFactories/metadata/displayFormFactory.js.map +1 -1
- package/esm/ldmFactories/metadata/factFactory.js +3 -13
- package/esm/ldmFactories/metadata/factFactory.js.map +1 -1
- package/esm/ldmFactories/metadata/factory.js +16 -23
- package/esm/ldmFactories/metadata/factory.js.map +1 -1
- package/esm/ldmFactories/metadata/measureFactory.js +9 -19
- package/esm/ldmFactories/metadata/measureFactory.js.map +1 -1
- package/esm/ldmFactories/metadata/variableFactory.js +3 -13
- package/esm/ldmFactories/metadata/variableFactory.js.map +1 -1
- package/esm/normalizingBackend/index.js +64 -90
- package/esm/normalizingBackend/index.js.map +1 -1
- package/esm/normalizingBackend/normalizer.d.ts.map +1 -1
- package/esm/normalizingBackend/normalizer.js +125 -136
- package/esm/normalizingBackend/normalizer.js.map +1 -1
- package/esm/toolkit/auth.js +47 -63
- package/esm/toolkit/auth.js.map +1 -1
- package/esm/toolkit/execution.js +38 -53
- package/esm/toolkit/execution.js.map +1 -1
- package/esm/toolkit/paging.js +72 -144
- package/esm/toolkit/paging.js.map +1 -1
- package/esm/toolkit/pluginUrlValidation.js +8 -8
- package/esm/toolkit/pluginUrlValidation.js.map +1 -1
- package/esm/workspaceSettingsBackend/index.js +19 -43
- package/esm/workspaceSettingsBackend/index.js.map +1 -1
- package/package.json +7 -6
package/dist/toolkit/auth.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AnonymousAuthProvider = exports.AnonymousUser = exports.NoopAuthProvider = exports.AuthProviderCallGuard = void 0;
|
|
4
|
-
var tslib_1 = require("tslib");
|
|
5
4
|
// (C) 2019-2021 GoodData Corporation
|
|
6
|
-
|
|
5
|
+
const sdk_backend_spi_1 = require("@gooddata/sdk-backend-spi");
|
|
7
6
|
/**
|
|
8
7
|
* This implementation of auth provider ensures, that the auth provider is called exactly once in the happy path
|
|
9
8
|
* execution where provider successfully authenticates a principal.
|
|
@@ -17,78 +16,69 @@ var sdk_backend_spi_1 = require("@gooddata/sdk-backend-spi");
|
|
|
17
16
|
*
|
|
18
17
|
* @internal
|
|
19
18
|
*/
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
var _this = this;
|
|
19
|
+
class AuthProviderCallGuard {
|
|
20
|
+
constructor(realProvider) {
|
|
23
21
|
this.realProvider = realProvider;
|
|
24
|
-
this.reset =
|
|
25
|
-
|
|
22
|
+
this.reset = () => {
|
|
23
|
+
this.principal = undefined;
|
|
26
24
|
};
|
|
27
25
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
28
|
-
this.initializeClient =
|
|
26
|
+
this.initializeClient = (client) => {
|
|
29
27
|
var _a, _b;
|
|
30
|
-
(_b = (_a =
|
|
28
|
+
(_b = (_a = this.realProvider).initializeClient) === null || _b === void 0 ? void 0 : _b.call(_a, client);
|
|
31
29
|
};
|
|
32
|
-
this.onNotAuthenticated =
|
|
30
|
+
this.onNotAuthenticated = (context, error) => {
|
|
33
31
|
var _a, _b;
|
|
34
|
-
(_b = (_a =
|
|
32
|
+
(_b = (_a = this.realProvider).onNotAuthenticated) === null || _b === void 0 ? void 0 : _b.call(_a, context, error);
|
|
35
33
|
};
|
|
36
|
-
this.authenticate =
|
|
37
|
-
if (
|
|
38
|
-
return Promise.resolve(
|
|
34
|
+
this.authenticate = (context) => {
|
|
35
|
+
if (this.principal) {
|
|
36
|
+
return Promise.resolve(this.principal);
|
|
39
37
|
}
|
|
40
|
-
if (
|
|
41
|
-
return
|
|
38
|
+
if (this.inflightRequest) {
|
|
39
|
+
return this.inflightRequest;
|
|
42
40
|
}
|
|
43
|
-
|
|
41
|
+
this.inflightRequest = this.realProvider
|
|
44
42
|
.authenticate(context)
|
|
45
|
-
.then(
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
.then((res) => {
|
|
44
|
+
this.principal = res;
|
|
45
|
+
this.inflightRequest = undefined;
|
|
48
46
|
return res;
|
|
49
47
|
})
|
|
50
|
-
.catch(
|
|
51
|
-
|
|
48
|
+
.catch((err) => {
|
|
49
|
+
this.inflightRequest = undefined;
|
|
52
50
|
throw err;
|
|
53
51
|
});
|
|
54
|
-
return
|
|
52
|
+
return this.inflightRequest;
|
|
55
53
|
};
|
|
56
54
|
}
|
|
57
|
-
|
|
55
|
+
getCurrentPrincipal(context) {
|
|
58
56
|
return this.realProvider.getCurrentPrincipal(context);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
};
|
|
67
|
-
return AuthProviderCallGuard;
|
|
68
|
-
}());
|
|
57
|
+
}
|
|
58
|
+
async deauthenticate(context) {
|
|
59
|
+
return this.realProvider.deauthenticate(context);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
69
62
|
exports.AuthProviderCallGuard = AuthProviderCallGuard;
|
|
70
63
|
/**
|
|
71
64
|
* This implementation serves as a Null object for IAuthProviderCallGuard.
|
|
72
65
|
*
|
|
73
66
|
* @internal
|
|
74
67
|
*/
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
NoopAuthProvider.prototype.authenticate = function (_context) {
|
|
68
|
+
class NoopAuthProvider {
|
|
69
|
+
authenticate(_context) {
|
|
79
70
|
throw new sdk_backend_spi_1.NotSupported("NoopAuthProvider does not support authenticate");
|
|
80
|
-
}
|
|
81
|
-
|
|
71
|
+
}
|
|
72
|
+
getCurrentPrincipal(_context) {
|
|
82
73
|
throw new sdk_backend_spi_1.NotSupported("NoopAuthProvider does not support getCurrentPrincipal");
|
|
83
|
-
}
|
|
84
|
-
|
|
74
|
+
}
|
|
75
|
+
deauthenticate(_context) {
|
|
85
76
|
throw new sdk_backend_spi_1.NotSupported("NoopAuthProvider does not support deauthenticate");
|
|
86
|
-
}
|
|
87
|
-
|
|
77
|
+
}
|
|
78
|
+
reset() {
|
|
88
79
|
throw new sdk_backend_spi_1.NotSupported("NoopAuthProvider does not support reset");
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
}());
|
|
80
|
+
}
|
|
81
|
+
}
|
|
92
82
|
exports.NoopAuthProvider = NoopAuthProvider;
|
|
93
83
|
exports.AnonymousUser = {
|
|
94
84
|
userId: "anonymous",
|
|
@@ -98,22 +88,19 @@ exports.AnonymousUser = {
|
|
|
98
88
|
*
|
|
99
89
|
* @public
|
|
100
90
|
*/
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
AnonymousAuthProvider.prototype.authenticate = function (_context) {
|
|
91
|
+
class AnonymousAuthProvider {
|
|
92
|
+
authenticate(_context) {
|
|
105
93
|
return Promise.resolve(exports.AnonymousUser);
|
|
106
|
-
}
|
|
107
|
-
|
|
94
|
+
}
|
|
95
|
+
getCurrentPrincipal(_context) {
|
|
108
96
|
return Promise.resolve(exports.AnonymousUser);
|
|
109
|
-
}
|
|
110
|
-
|
|
97
|
+
}
|
|
98
|
+
deauthenticate(_context) {
|
|
111
99
|
return Promise.resolve();
|
|
112
|
-
}
|
|
113
|
-
|
|
100
|
+
}
|
|
101
|
+
reset() {
|
|
114
102
|
return;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
}());
|
|
103
|
+
}
|
|
104
|
+
}
|
|
118
105
|
exports.AnonymousAuthProvider = AnonymousAuthProvider;
|
|
119
106
|
//# sourceMappingURL=auth.js.map
|
package/dist/toolkit/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/toolkit/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/toolkit/auth.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AACrC,+DAOmC;AA6CnC;;;;;;;;;;;;GAYG;AACH,MAAa,qBAAqB;IAI9B,YAA6B,YAAqC;QAArC,iBAAY,GAAZ,YAAY,CAAyB;QAE3D,UAAK,GAAG,GAAS,EAAE;YACtB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC/B,CAAC,CAAC;QAEF,6EAA6E;QACtE,qBAAgB,GAAG,CAAC,MAAW,EAAQ,EAAE;;YAC5C,MAAA,MAAA,IAAI,CAAC,YAAY,EAAC,gBAAgB,mDAAG,MAAM,EAAE;QACjD,CAAC,CAAC;QAEK,uBAAkB,GAAG,CAAC,OAA+B,EAAE,KAAuB,EAAQ,EAAE;;YAC3F,MAAA,MAAA,IAAI,CAAC,YAAY,EAAC,kBAAkB,mDAAG,OAAO,EAAE,KAAK,EAAE;QAC3D,CAAC,CAAC;QAEK,iBAAY,GAAG,CAAC,OAA+B,EAAoC,EAAE;YACxF,IAAI,IAAI,CAAC,SAAS,EAAE;gBAChB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC1C;YAED,IAAI,IAAI,CAAC,eAAe,EAAE;gBACtB,OAAO,IAAI,CAAC,eAAe,CAAC;aAC/B;YAED,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY;iBACnC,YAAY,CAAC,OAAO,CAAC;iBACrB,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;gBACV,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;gBACrB,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;gBAEjC,OAAO,GAAG,CAAC;YACf,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACX,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;gBAEjC,MAAM,GAAG,CAAC;YACd,CAAC,CAAC,CAAC;YAEP,OAAO,IAAI,CAAC,eAAe,CAAC;QAChC,CAAC,CAAC;IAvCmE,CAAC;IAyC/D,mBAAmB,CAAC,OAA+B;QACtD,OAAO,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,OAA+B;QACvD,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;CACJ;AApDD,sDAoDC;AAED;;;;GAIG;AACH,MAAa,gBAAgB;IAClB,YAAY,CAAC,QAAgC;QAChD,MAAM,IAAI,8BAAY,CAAC,gDAAgD,CAAC,CAAC;IAC7E,CAAC;IAEM,mBAAmB,CAAC,QAAgC;QACvD,MAAM,IAAI,8BAAY,CAAC,uDAAuD,CAAC,CAAC;IACpF,CAAC;IAEM,cAAc,CAAC,QAAgC;QAClD,MAAM,IAAI,8BAAY,CAAC,kDAAkD,CAAC,CAAC;IAC/E,CAAC;IAEM,KAAK;QACR,MAAM,IAAI,8BAAY,CAAC,yCAAyC,CAAC,CAAC;IACtE,CAAC;CACJ;AAhBD,4CAgBC;AAEY,QAAA,aAAa,GAA4B;IAClD,MAAM,EAAE,WAAW;CACtB,CAAC;AAEF;;;;GAIG;AACH,MAAa,qBAAqB;IACvB,YAAY,CAAC,QAAgC;QAChD,OAAO,OAAO,CAAC,OAAO,CAAC,qBAAa,CAAC,CAAC;IAC1C,CAAC;IAEM,mBAAmB,CAAC,QAAgC;QACvD,OAAO,OAAO,CAAC,OAAO,CAAC,qBAAa,CAAC,CAAC;IAC1C,CAAC;IAEM,cAAc,CAAC,QAAgC;QAClD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEM,KAAK;QACR,OAAO;IACX,CAAC;CACJ;AAhBD,sDAgBC"}
|
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
// (C) 2019-2020 GoodData Corporation
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.ExecutionFactoryUpgradingToExecByReference = exports.ExecutionFactoryWithFixedFilters = exports.AbstractExecutionFactory = void 0;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
var execution_1 = require("../decoratedBackend/execution");
|
|
5
|
+
const sdk_model_1 = require("@gooddata/sdk-model");
|
|
6
|
+
const execution_1 = require("../decoratedBackend/execution");
|
|
8
7
|
/**
|
|
9
8
|
* Abstract base class that can be extended to implement concrete execution factories for different
|
|
10
9
|
* backend implementations.
|
|
@@ -18,27 +17,26 @@ var execution_1 = require("../decoratedBackend/execution");
|
|
|
18
17
|
*
|
|
19
18
|
* @internal
|
|
20
19
|
*/
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
class AbstractExecutionFactory {
|
|
21
|
+
constructor(workspace) {
|
|
23
22
|
this.workspace = workspace;
|
|
24
23
|
}
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
forItems(items, filters) {
|
|
25
|
+
const def = sdk_model_1.defWithDimensions(sdk_model_1.newDefForItems(this.workspace, items, filters), sdk_model_1.defaultDimensionsGenerator);
|
|
27
26
|
return this.forDefinition(def);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
}
|
|
28
|
+
forBuckets(buckets, filters) {
|
|
29
|
+
const def = sdk_model_1.defWithDimensions(sdk_model_1.newDefForBuckets(this.workspace, buckets, filters), sdk_model_1.defaultDimensionsGenerator);
|
|
31
30
|
return this.forDefinition(def);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
}
|
|
32
|
+
forInsight(insight, filters) {
|
|
33
|
+
const def = sdk_model_1.defWithDimensions(sdk_model_1.newDefForInsight(this.workspace, insight, filters), sdk_model_1.defaultDimensionsGenerator);
|
|
35
34
|
return this.forDefinition(def);
|
|
36
|
-
}
|
|
37
|
-
|
|
35
|
+
}
|
|
36
|
+
forInsightByRef(insight, filters) {
|
|
38
37
|
return this.forInsight(insight, filters);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
}());
|
|
38
|
+
}
|
|
39
|
+
}
|
|
42
40
|
exports.AbstractExecutionFactory = AbstractExecutionFactory;
|
|
43
41
|
/**
|
|
44
42
|
* This implementation of execution factory allows transparent injection of fixed set of filters to all
|
|
@@ -49,32 +47,24 @@ exports.AbstractExecutionFactory = AbstractExecutionFactory;
|
|
|
49
47
|
*
|
|
50
48
|
* @internal
|
|
51
49
|
*/
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
return
|
|
50
|
+
class ExecutionFactoryWithFixedFilters extends execution_1.DecoratedExecutionFactory {
|
|
51
|
+
constructor(decorated, filters = []) {
|
|
52
|
+
super(decorated);
|
|
53
|
+
this.filters = filters;
|
|
54
|
+
}
|
|
55
|
+
forItems(items, filters = []) {
|
|
56
|
+
return super.forItems(items, this.filters.concat(filters));
|
|
59
57
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
return _super.prototype.forInsight.call(this, insight, this.filters.concat(filters));
|
|
71
|
-
};
|
|
72
|
-
ExecutionFactoryWithFixedFilters.prototype.forInsightByRef = function (insight, filters) {
|
|
73
|
-
if (filters === void 0) { filters = []; }
|
|
74
|
-
return _super.prototype.forInsightByRef.call(this, insight, this.filters.concat(filters));
|
|
75
|
-
};
|
|
76
|
-
return ExecutionFactoryWithFixedFilters;
|
|
77
|
-
}(execution_1.DecoratedExecutionFactory));
|
|
58
|
+
forBuckets(buckets, filters = []) {
|
|
59
|
+
return super.forBuckets(buckets, this.filters.concat(filters));
|
|
60
|
+
}
|
|
61
|
+
forInsight(insight, filters = []) {
|
|
62
|
+
return super.forInsight(insight, this.filters.concat(filters));
|
|
63
|
+
}
|
|
64
|
+
forInsightByRef(insight, filters = []) {
|
|
65
|
+
return super.forInsightByRef(insight, this.filters.concat(filters));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
78
68
|
exports.ExecutionFactoryWithFixedFilters = ExecutionFactoryWithFixedFilters;
|
|
79
69
|
/**
|
|
80
70
|
* This implementation of execution factory will transparently upgrade any `forInsight` execution
|
|
@@ -83,18 +73,16 @@ exports.ExecutionFactoryWithFixedFilters = ExecutionFactoryWithFixedFilters;
|
|
|
83
73
|
*
|
|
84
74
|
* @internal
|
|
85
75
|
*/
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
return _super.call(this, decorated) || this;
|
|
76
|
+
class ExecutionFactoryUpgradingToExecByReference extends execution_1.DecoratedExecutionFactory {
|
|
77
|
+
constructor(decorated) {
|
|
78
|
+
super(decorated);
|
|
90
79
|
}
|
|
91
|
-
|
|
80
|
+
forInsight(insight, filters) {
|
|
92
81
|
if (sdk_model_1.isInsight(insight)) {
|
|
93
82
|
return this.forInsightByRef(insight, filters);
|
|
94
83
|
}
|
|
95
|
-
return
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
}(execution_1.DecoratedExecutionFactory));
|
|
84
|
+
return super.forInsight(insight, filters);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
99
87
|
exports.ExecutionFactoryUpgradingToExecByReference = ExecutionFactoryUpgradingToExecByReference;
|
|
100
88
|
//# sourceMappingURL=execution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/toolkit/execution.ts"],"names":[],"mappings":";AAAA,qCAAqC
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/toolkit/execution.ts"],"names":[],"mappings":";AAAA,qCAAqC;;;AAErC,mDAa6B;AAG7B,6DAA0E;AAE1E;;;;;;;;;;;;GAYG;AACH,MAAsB,wBAAwB;IAC1C,YAA+B,SAAiB;QAAjB,cAAS,GAAT,SAAS,CAAQ;IAAG,CAAC;IAI7C,QAAQ,CAAC,KAA4B,EAAE,OAA2B;QACrE,MAAM,GAAG,GAAG,6BAAiB,CACzB,0BAAc,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,EAC9C,sCAA0B,CAC7B,CAAC;QAEF,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAEM,UAAU,CAAC,OAAkB,EAAE,OAA2B;QAC7D,MAAM,GAAG,GAAG,6BAAiB,CACzB,4BAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,EAClD,sCAA0B,CAC7B,CAAC;QAEF,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAEM,UAAU,CAAC,OAA2B,EAAE,OAA2B;QACtE,MAAM,GAAG,GAAG,6BAAiB,CACzB,4BAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,EAClD,sCAA0B,CAC7B,CAAC;QAEF,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAEM,eAAe,CAAC,OAAiB,EAAE,OAA2B;QACjE,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;CACJ;AAnCD,4DAmCC;AAED;;;;;;;;GAQG;AACH,MAAa,gCAAiC,SAAQ,qCAAyB;IAC3E,YAAY,SAA4B,EAAmB,UAA6B,EAAE;QACtF,KAAK,CAAC,SAAS,CAAC,CAAC;QADsC,YAAO,GAAP,OAAO,CAAwB;IAE1F,CAAC;IAEM,QAAQ,CAAC,KAA4B,EAAE,UAA6B,EAAE;QACzE,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC;IAEM,UAAU,CAAC,OAAkB,EAAE,UAA6B,EAAE;QACjE,OAAO,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,CAAC;IAEM,UAAU,CAAC,OAA2B,EAAE,UAA6B,EAAE;QAC1E,OAAO,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,CAAC;IAEM,eAAe,CAAC,OAAiB,EAAE,UAA6B,EAAE;QACrE,OAAO,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACxE,CAAC;CACJ;AApBD,4EAoBC;AAED;;;;;;GAMG;AACH,MAAa,0CAA2C,SAAQ,qCAAyB;IACrF,YAAY,SAA4B;QACpC,KAAK,CAAC,SAAS,CAAC,CAAC;IACrB,CAAC;IAEM,UAAU,CAAC,OAA2B,EAAE,OAA2B;QACtE,IAAI,qBAAS,CAAC,OAAO,CAAC,EAAE;YACpB,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;SACjD;QAED,OAAO,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;CACJ;AAZD,gGAYC"}
|
package/dist/toolkit/paging.js
CHANGED
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ServerPaging = exports.InMemoryPaging = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const ts_invariant_1 = tslib_1.__importDefault(require("ts-invariant"));
|
|
6
|
+
const range_1 = tslib_1.__importDefault(require("lodash/range"));
|
|
7
|
+
const flatMap_1 = tslib_1.__importDefault(require("lodash/flatMap"));
|
|
8
|
+
const isNil_1 = tslib_1.__importDefault(require("lodash/isNil"));
|
|
9
9
|
/**
|
|
10
10
|
* This implementation of {@link @gooddata/sdk-backend-spi#IPagedResource} pages over a list of items
|
|
11
11
|
* provided at construction time. The paging is done using pre-configured page limit and starts at particular offset.
|
|
12
12
|
*
|
|
13
13
|
* @internal
|
|
14
14
|
*/
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
if (limit === void 0) { limit = 50; }
|
|
18
|
-
if (offset === void 0) { offset = 0; }
|
|
15
|
+
class InMemoryPaging {
|
|
16
|
+
constructor(allItems, limit = 50, offset = 0) {
|
|
19
17
|
this.allItems = allItems;
|
|
20
|
-
ts_invariant_1.default(offset >= 0,
|
|
21
|
-
ts_invariant_1.default(limit > 0,
|
|
18
|
+
ts_invariant_1.default(offset >= 0, `paging offset must be non-negative, got: ${offset}`);
|
|
19
|
+
ts_invariant_1.default(limit > 0, `limit must be a positive number, got: ${limit}`);
|
|
22
20
|
// this will naturally return empty items if at the end of data; limit will always be positive
|
|
23
21
|
this.items = allItems.slice(offset, offset + limit);
|
|
24
22
|
// offset is at most at the end of all available elements
|
|
@@ -27,152 +25,85 @@ var InMemoryPaging = /** @class */ (function () {
|
|
|
27
25
|
this.limit = limit;
|
|
28
26
|
this.totalCount = allItems.length;
|
|
29
27
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
return
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
};
|
|
50
|
-
InMemoryPaging.prototype.all = function () {
|
|
51
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
52
|
-
return tslib_1.__generator(this, function (_a) {
|
|
53
|
-
return [2 /*return*/, tslib_1.__spreadArrays(this.allItems)];
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
};
|
|
57
|
-
InMemoryPaging.prototype.allSorted = function (compareFn) {
|
|
58
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
59
|
-
return tslib_1.__generator(this, function (_a) {
|
|
60
|
-
return [2 /*return*/, tslib_1.__spreadArrays(this.allItems).sort(compareFn)];
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
};
|
|
64
|
-
return InMemoryPaging;
|
|
65
|
-
}());
|
|
28
|
+
async next() {
|
|
29
|
+
if (this.items.length === 0) {
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
return new InMemoryPaging(this.allItems, this.limit, this.offset + this.items.length);
|
|
33
|
+
}
|
|
34
|
+
async goTo(pageIndex) {
|
|
35
|
+
if (this.items.length === 0) {
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
return new InMemoryPaging(this.allItems, this.limit, pageIndex * this.items.length);
|
|
39
|
+
}
|
|
40
|
+
async all() {
|
|
41
|
+
return [...this.allItems];
|
|
42
|
+
}
|
|
43
|
+
async allSorted(compareFn) {
|
|
44
|
+
return [...this.allItems].sort(compareFn);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
66
47
|
exports.InMemoryPaging = InMemoryPaging;
|
|
67
48
|
/**
|
|
68
49
|
* Common implementation of the {@link @gooddata/sdk-backend-spi#IPagedResource} for the server-side paging.
|
|
69
50
|
*
|
|
70
51
|
* @internal
|
|
71
52
|
*/
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
var _this = this;
|
|
75
|
-
if (limit === void 0) { limit = 50; }
|
|
76
|
-
if (offset === void 0) { offset = 0; }
|
|
53
|
+
class ServerPaging {
|
|
54
|
+
constructor(getData, limit = 50, offset = 0, totalCount, items) {
|
|
77
55
|
this.getData = getData;
|
|
78
56
|
this.limit = limit;
|
|
79
57
|
this.offset = offset;
|
|
80
58
|
this.totalCount = totalCount;
|
|
81
59
|
this.items = items;
|
|
82
|
-
this.next =
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
return
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
}
|
|
129
|
-
_a.label = 1;
|
|
130
|
-
case 1:
|
|
131
|
-
if (!(allPagesToLoad.length > 0)) return [3 /*break*/, 3];
|
|
132
|
-
pagesToLoad = allPagesToLoad.slice(0, maxRequests);
|
|
133
|
-
allPagesToLoad.splice(0, maxRequests);
|
|
134
|
-
return [4 /*yield*/, Promise.all(pagesToLoad.map(function (page) { return _this.goTo(page); }))];
|
|
135
|
-
case 2:
|
|
136
|
-
loadedPages = _a.sent();
|
|
137
|
-
results.push.apply(results, flatMap_1.default(loadedPages, function (page) { return page.items; }));
|
|
138
|
-
return [3 /*break*/, 1];
|
|
139
|
-
case 3: return [2 /*return*/, results];
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
}); };
|
|
143
|
-
this.allSorted = function (compareFn) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
144
|
-
var all;
|
|
145
|
-
return tslib_1.__generator(this, function (_a) {
|
|
146
|
-
switch (_a.label) {
|
|
147
|
-
case 0: return [4 /*yield*/, this.all()];
|
|
148
|
-
case 1:
|
|
149
|
-
all = _a.sent();
|
|
150
|
-
return [2 /*return*/, all.sort(compareFn)];
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
}); };
|
|
60
|
+
this.next = async () => {
|
|
61
|
+
// No items = we are on the last page.
|
|
62
|
+
if (this.items.length === 0) {
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
// We are on the last page with the items - return empty result for the next page immediately
|
|
66
|
+
if (this.items.length < this.limit || this.offset + this.items.length === this.totalCount) {
|
|
67
|
+
return new ServerPaging(this.getData, this.limit, this.offset + this.limit, this.totalCount, []);
|
|
68
|
+
}
|
|
69
|
+
const pageData = await this.getData({ limit: this.limit, offset: this.offset + this.limit });
|
|
70
|
+
return new ServerPaging(this.getData, this.limit, this.offset + this.limit, pageData.totalCount, pageData.items);
|
|
71
|
+
};
|
|
72
|
+
this.goTo = async (pageIndex) => {
|
|
73
|
+
const offset = pageIndex * this.limit;
|
|
74
|
+
const pageData = await this.getData({ limit: this.limit, offset });
|
|
75
|
+
return new ServerPaging(this.getData, this.limit, offset, pageData.totalCount, pageData.items);
|
|
76
|
+
};
|
|
77
|
+
this.all = async () => {
|
|
78
|
+
const results = [];
|
|
79
|
+
const maxRequests = 6;
|
|
80
|
+
const allPagesToLoad = range_1.default(0, this.totalCount / this.limit);
|
|
81
|
+
// if the paged resource is already at the 0 offset, use it directly to save a duplicate request
|
|
82
|
+
if (this.offset === 0) {
|
|
83
|
+
results.push(...this.items);
|
|
84
|
+
allPagesToLoad.shift();
|
|
85
|
+
}
|
|
86
|
+
while (allPagesToLoad.length > 0) {
|
|
87
|
+
const pagesToLoad = allPagesToLoad.slice(0, maxRequests);
|
|
88
|
+
allPagesToLoad.splice(0, maxRequests);
|
|
89
|
+
const loadedPages = await Promise.all(pagesToLoad.map((page) => this.goTo(page)));
|
|
90
|
+
results.push(...flatMap_1.default(loadedPages, (page) => page.items));
|
|
91
|
+
}
|
|
92
|
+
return results;
|
|
93
|
+
};
|
|
94
|
+
this.allSorted = async (compareFn) => {
|
|
95
|
+
const all = await this.all();
|
|
96
|
+
return all.sort(compareFn);
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
static async for(getData, limit = 50, offset = 0) {
|
|
100
|
+
ts_invariant_1.default(offset >= 0, `paging offset must be non-negative, got: ${offset}`);
|
|
101
|
+
ts_invariant_1.default(limit > 0, `limit must be a positive number, got: ${limit}`);
|
|
102
|
+
const { totalCount, items } = await getData({ limit, offset });
|
|
103
|
+
// must use isNil, totalCount: 0 is a valid case (e.g. when searching for a nonsensical string)
|
|
104
|
+
ts_invariant_1.default(!isNil_1.default(totalCount), `total count must be specified, got: ${totalCount}`);
|
|
105
|
+
return new ServerPaging(getData, limit, offset, totalCount, items);
|
|
154
106
|
}
|
|
155
|
-
|
|
156
|
-
if (limit === void 0) { limit = 50; }
|
|
157
|
-
if (offset === void 0) { offset = 0; }
|
|
158
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
159
|
-
var _a, totalCount, items;
|
|
160
|
-
return tslib_1.__generator(this, function (_b) {
|
|
161
|
-
switch (_b.label) {
|
|
162
|
-
case 0:
|
|
163
|
-
ts_invariant_1.default(offset >= 0, "paging offset must be non-negative, got: " + offset);
|
|
164
|
-
ts_invariant_1.default(limit > 0, "limit must be a positive number, got: " + limit);
|
|
165
|
-
return [4 /*yield*/, getData({ limit: limit, offset: offset })];
|
|
166
|
-
case 1:
|
|
167
|
-
_a = _b.sent(), totalCount = _a.totalCount, items = _a.items;
|
|
168
|
-
// must use isNil, totalCount: 0 is a valid case (e.g. when searching for a nonsensical string)
|
|
169
|
-
ts_invariant_1.default(!isNil_1.default(totalCount), "total count must be specified, got: " + totalCount);
|
|
170
|
-
return [2 /*return*/, new ServerPaging(getData, limit, offset, totalCount, items)];
|
|
171
|
-
}
|
|
172
|
-
});
|
|
173
|
-
});
|
|
174
|
-
};
|
|
175
|
-
return ServerPaging;
|
|
176
|
-
}());
|
|
107
|
+
}
|
|
177
108
|
exports.ServerPaging = ServerPaging;
|
|
178
109
|
//# sourceMappingURL=paging.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paging.js","sourceRoot":"","sources":["../../src/toolkit/paging.ts"],"names":[],"mappings":";;;;AAEA,
|
|
1
|
+
{"version":3,"file":"paging.js","sourceRoot":"","sources":["../../src/toolkit/paging.ts"],"names":[],"mappings":"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"}
|