@gooddata/sdk-backend-base 8.13.0-alpha.9 → 9.0.0-alpha.2
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.d.ts +2 -2
- package/dist/cachingBackend/index.d.ts.map +1 -1
- package/dist/cachingBackend/index.js +310 -386
- package/dist/cachingBackend/index.js.map +1 -1
- package/dist/convertors/fromBackend/afm/result.d.ts +1 -1
- package/dist/convertors/fromBackend/afm/result.d.ts.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/config.d.ts +9 -9
- package/dist/customBackend/config.d.ts.map +1 -1
- package/dist/customBackend/execution.js +77 -92
- package/dist/customBackend/execution.js.map +1 -1
- package/dist/customBackend/index.d.ts +1 -1
- package/dist/customBackend/index.d.ts.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.d.ts +1 -1
- package/dist/decoratedBackend/catalog.d.ts.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.d.ts +2 -1
- package/dist/decoratedBackend/execution.d.ts.map +1 -1
- package/dist/decoratedBackend/execution.js +63 -79
- package/dist/decoratedBackend/execution.js.map +1 -1
- package/dist/decoratedBackend/index.d.ts +7 -7
- package/dist/decoratedBackend/index.d.ts.map +1 -1
- package/dist/decoratedBackend/index.js +91 -105
- 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.d.ts +1 -1
- package/dist/dummyBackend/index.d.ts.map +1 -1
- package/dist/dummyBackend/index.js +369 -397
- package/dist/dummyBackend/index.js.map +1 -1
- package/dist/eventingBackend/index.d.ts +1 -1
- package/dist/eventingBackend/index.d.ts.map +1 -1
- package/dist/eventingBackend/index.js +44 -51
- package/dist/eventingBackend/index.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/ldmFactories/builder.d.ts +4 -4
- package/dist/ldmFactories/builder.d.ts.map +1 -1
- package/dist/ldmFactories/builder.js +15 -16
- package/dist/ldmFactories/builder.js.map +1 -1
- package/dist/ldmFactories/catalog/attributeFactory.js +27 -36
- package/dist/ldmFactories/catalog/attributeFactory.js.map +1 -1
- package/dist/ldmFactories/catalog/dateDatasetFactory.js +33 -47
- package/dist/ldmFactories/catalog/dateDatasetFactory.js.map +1 -1
- package/dist/ldmFactories/catalog/factFactory.js +14 -21
- package/dist/ldmFactories/catalog/factFactory.js.map +1 -1
- package/dist/ldmFactories/catalog/groupFactory.js +15 -27
- package/dist/ldmFactories/catalog/groupFactory.js.map +1 -1
- package/dist/ldmFactories/catalog/measureFactory.js +18 -27
- package/dist/ldmFactories/catalog/measureFactory.js.map +1 -1
- package/dist/ldmFactories/dashboard/insightWidgetFactory.js +22 -28
- package/dist/ldmFactories/dashboard/insightWidgetFactory.js.map +1 -1
- package/dist/ldmFactories/dashboard/kpiWidgetFactory.js +26 -35
- 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 +14 -21
- package/dist/ldmFactories/metadata/attributeFactory.js.map +1 -1
- package/dist/ldmFactories/metadata/dashboardFactory.js +8 -15
- package/dist/ldmFactories/metadata/dashboardFactory.js.map +1 -1
- package/dist/ldmFactories/metadata/dataSetFactory.js +8 -15
- package/dist/ldmFactories/metadata/dataSetFactory.js.map +1 -1
- package/dist/ldmFactories/metadata/displayFormFactory.js +14 -21
- package/dist/ldmFactories/metadata/displayFormFactory.js.map +1 -1
- package/dist/ldmFactories/metadata/factFactory.js +8 -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 +14 -21
- package/dist/ldmFactories/metadata/measureFactory.js.map +1 -1
- package/dist/ldmFactories/metadata/variableFactory.js +8 -15
- package/dist/ldmFactories/metadata/variableFactory.js.map +1 -1
- package/dist/normalizingBackend/index.d.ts +2 -2
- package/dist/normalizingBackend/index.d.ts.map +1 -1
- package/dist/normalizingBackend/index.js +79 -103
- package/dist/normalizingBackend/index.js.map +1 -1
- package/dist/normalizingBackend/normalizer.d.ts +2 -2
- package/dist/normalizingBackend/normalizer.d.ts.map +1 -1
- package/dist/normalizingBackend/normalizer.js +153 -160
- package/dist/normalizingBackend/normalizer.js.map +1 -1
- package/dist/toolkit/auth.d.ts +2 -2
- package/dist/toolkit/auth.d.ts.map +1 -1
- package/dist/toolkit/auth.js +47 -60
- package/dist/toolkit/auth.js.map +1 -1
- package/dist/toolkit/backend.d.ts +1 -1
- package/dist/toolkit/backend.d.ts.map +1 -1
- package/dist/toolkit/execution.js +41 -53
- package/dist/toolkit/execution.js.map +1 -1
- package/dist/toolkit/paging.d.ts +1 -1
- package/dist/toolkit/paging.d.ts.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.d.ts +3 -3
- package/dist/workspaceSettingsBackend/index.d.ts.map +1 -1
- package/dist/workspaceSettingsBackend/index.js +23 -46
- package/dist/workspaceSettingsBackend/index.js.map +1 -1
- package/esm/cachingBackend/index.d.ts +2 -2
- package/esm/cachingBackend/index.d.ts.map +1 -1
- package/esm/cachingBackend/index.js +281 -358
- package/esm/cachingBackend/index.js.map +1 -1
- package/esm/convertors/fromBackend/afm/result.d.ts +1 -1
- package/esm/convertors/fromBackend/afm/result.d.ts.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/config.d.ts +9 -9
- package/esm/customBackend/config.d.ts.map +1 -1
- package/esm/customBackend/execution.js +72 -89
- package/esm/customBackend/execution.js.map +1 -1
- package/esm/customBackend/index.d.ts +1 -1
- package/esm/customBackend/index.d.ts.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.d.ts +1 -1
- package/esm/decoratedBackend/catalog.d.ts.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.d.ts +2 -1
- package/esm/decoratedBackend/execution.d.ts.map +1 -1
- package/esm/decoratedBackend/execution.js +61 -81
- package/esm/decoratedBackend/execution.js.map +1 -1
- package/esm/decoratedBackend/index.d.ts +7 -7
- package/esm/decoratedBackend/index.d.ts.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.d.ts +1 -1
- package/esm/dummyBackend/index.d.ts.map +1 -1
- package/esm/dummyBackend/index.js +358 -387
- package/esm/dummyBackend/index.js.map +1 -1
- package/esm/eventingBackend/index.d.ts +1 -1
- package/esm/eventingBackend/index.d.ts.map +1 -1
- package/esm/eventingBackend/index.js +37 -45
- package/esm/eventingBackend/index.js.map +1 -1
- package/esm/ldmFactories/builder.d.ts +4 -4
- package/esm/ldmFactories/builder.d.ts.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.d.ts +2 -2
- package/esm/normalizingBackend/index.d.ts.map +1 -1
- package/esm/normalizingBackend/index.js +65 -90
- package/esm/normalizingBackend/index.js.map +1 -1
- package/esm/normalizingBackend/normalizer.d.ts +2 -2
- package/esm/normalizingBackend/normalizer.d.ts.map +1 -1
- package/esm/normalizingBackend/normalizer.js +128 -138
- package/esm/normalizingBackend/normalizer.js.map +1 -1
- package/esm/toolkit/auth.d.ts +2 -2
- package/esm/toolkit/auth.d.ts.map +1 -1
- package/esm/toolkit/auth.js +47 -63
- package/esm/toolkit/auth.js.map +1 -1
- package/esm/toolkit/backend.d.ts +1 -1
- package/esm/toolkit/backend.d.ts.map +1 -1
- package/esm/toolkit/execution.js +38 -53
- package/esm/toolkit/execution.js.map +1 -1
- package/esm/toolkit/paging.d.ts +1 -1
- package/esm/toolkit/paging.d.ts.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/tsdoc-metadata.json +1 -1
- package/esm/workspaceSettingsBackend/index.d.ts +3 -3
- package/esm/workspaceSettingsBackend/index.d.ts.map +1 -1
- package/esm/workspaceSettingsBackend/index.js +19 -43
- package/esm/workspaceSettingsBackend/index.js.map +1 -1
- package/package.json +15 -15
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,CAAC,CAAC;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,CAAC,CAAC;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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/toolkit/backend.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/toolkit/backend.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC"}
|
|
@@ -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 = (0, sdk_model_1.defWithDimensions)((0, 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 = (0, sdk_model_1.defWithDimensions)((0, 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 = (0, sdk_model_1.defWithDimensions)((0, 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
|
-
|
|
92
|
-
if (sdk_model_1.isInsight(insight)) {
|
|
80
|
+
forInsight(insight, filters) {
|
|
81
|
+
if ((0, 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,IAAA,6BAAiB,EACzB,IAAA,0BAAc,EAAC,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,IAAA,6BAAiB,EACzB,IAAA,4BAAgB,EAAC,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,IAAA,6BAAiB,EACzB,IAAA,4BAAgB,EAAC,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,IAAA,qBAAS,EAAC,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.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paging.d.ts","sourceRoot":"","sources":["../../src/toolkit/paging.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAM3D;;;;;GAKG;AACH,qBAAa,cAAc,CAAC,CAAC,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;IAM3C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE;IAL5C,SAAgB,KAAK,EAAE,CAAC,EAAE,CAAC;IAC3B,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,UAAU,EAAE,MAAM,CAAC;gBAEJ,QAAQ,EAAE,CAAC,EAAE,EAAE,KAAK,SAAK,EAAE,MAAM,SAAI;IAevD,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAQlC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAQnD,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;IAInB,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;CAG1E;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC;IAClC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"paging.d.ts","sourceRoot":"","sources":["../../src/toolkit/paging.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAM3D;;;;;GAKG;AACH,qBAAa,cAAc,CAAC,CAAC,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;IAM3C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE;IAL5C,SAAgB,KAAK,EAAE,CAAC,EAAE,CAAC;IAC3B,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,UAAU,EAAE,MAAM,CAAC;gBAEJ,QAAQ,EAAE,CAAC,EAAE,EAAE,KAAK,SAAK,EAAE,MAAM,SAAI;IAevD,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAQlC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAQnD,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;IAInB,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;CAG1E;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC;IAClC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,qBAAa,YAAY,CAAC,CAAC,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;IAejD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;aAClF,KAAK;aACL,MAAM;aACN,UAAU,EAAE,MAAM;aAClB,KAAK,EAAE,CAAC,EAAE;WAlBV,GAAG,CAAC,KAAK,EACzB,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,KAAK,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,EACnF,KAAK,SAAK,EACV,MAAM,SAAI,GACX,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAUV,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAClF,KAAK,QAAK,EACV,MAAM,QAAI,EACV,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,CAAC,EAAE;IAGvB,IAAI,QAAa,QAAQ,eAAe,CAAC,CAAC,CAAC,CAmBhD;IAEK,IAAI,cAAqB,MAAM,KAAG,QAAQ,eAAe,CAAC,CAAC,CAAC,CAIjE;IAEK,GAAG,QAAa,QAAQ,CAAC,EAAE,CAAC,CAmBjC;IAEK,SAAS,kBAAyB,CAAC,KAAK,CAAC,KAAK,MAAM,KAAG,QAAQ,CAAC,EAAE,CAAC,CAGxE;CACL"}
|
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
|
+
(0, ts_invariant_1.default)(offset >= 0, `paging offset must be non-negative, got: ${offset}`);
|
|
19
|
+
(0, 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
|
-
|
|
75
|
-
|
|
76
|
-
|
|
53
|
+
class ServerPaging {
|
|
54
|
+
static async for(getData, limit = 50, offset = 0) {
|
|
55
|
+
(0, ts_invariant_1.default)(offset >= 0, `paging offset must be non-negative, got: ${offset}`);
|
|
56
|
+
(0, ts_invariant_1.default)(limit > 0, `limit must be a positive number, got: ${limit}`);
|
|
57
|
+
const { totalCount, items } = await getData({ limit, offset });
|
|
58
|
+
// must use isNil, totalCount: 0 is a valid case (e.g. when searching for a nonsensical string)
|
|
59
|
+
(0, ts_invariant_1.default)(!(0, isNil_1.default)(totalCount), `total count must be specified, got: ${totalCount}`);
|
|
60
|
+
return new ServerPaging(getData, limit, offset, totalCount, items);
|
|
61
|
+
}
|
|
62
|
+
constructor(getData, limit = 50, offset = 0, totalCount, items) {
|
|
77
63
|
this.getData = getData;
|
|
78
64
|
this.limit = limit;
|
|
79
65
|
this.offset = offset;
|
|
80
66
|
this.totalCount = totalCount;
|
|
81
67
|
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
|
-
case 0:
|
|
121
|
-
results = [];
|
|
122
|
-
maxRequests = 6;
|
|
123
|
-
allPagesToLoad = range_1.default(0, this.totalCount / this.limit);
|
|
124
|
-
// if the paged resource is already at the 0 offset, use it directly to save a duplicate request
|
|
125
|
-
if (this.offset === 0) {
|
|
126
|
-
results.push.apply(results, this.items);
|
|
127
|
-
allPagesToLoad.shift();
|
|
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
|
-
}); };
|
|
68
|
+
this.next = async () => {
|
|
69
|
+
// No items = we are on the last page.
|
|
70
|
+
if (this.items.length === 0) {
|
|
71
|
+
return this;
|
|
72
|
+
}
|
|
73
|
+
// We are on the last page with the items - return empty result for the next page immediately
|
|
74
|
+
if (this.items.length < this.limit || this.offset + this.items.length === this.totalCount) {
|
|
75
|
+
return new ServerPaging(this.getData, this.limit, this.offset + this.limit, this.totalCount, []);
|
|
76
|
+
}
|
|
77
|
+
const pageData = await this.getData({ limit: this.limit, offset: this.offset + this.limit });
|
|
78
|
+
return new ServerPaging(this.getData, this.limit, this.offset + this.limit, pageData.totalCount, pageData.items);
|
|
79
|
+
};
|
|
80
|
+
this.goTo = async (pageIndex) => {
|
|
81
|
+
const offset = pageIndex * this.limit;
|
|
82
|
+
const pageData = await this.getData({ limit: this.limit, offset });
|
|
83
|
+
return new ServerPaging(this.getData, this.limit, offset, pageData.totalCount, pageData.items);
|
|
84
|
+
};
|
|
85
|
+
this.all = async () => {
|
|
86
|
+
const results = [];
|
|
87
|
+
const maxRequests = 6;
|
|
88
|
+
const allPagesToLoad = (0, range_1.default)(0, this.totalCount / this.limit);
|
|
89
|
+
// if the paged resource is already at the 0 offset, use it directly to save a duplicate request
|
|
90
|
+
if (this.offset === 0) {
|
|
91
|
+
results.push(...this.items);
|
|
92
|
+
allPagesToLoad.shift();
|
|
93
|
+
}
|
|
94
|
+
while (allPagesToLoad.length > 0) {
|
|
95
|
+
const pagesToLoad = allPagesToLoad.slice(0, maxRequests);
|
|
96
|
+
allPagesToLoad.splice(0, maxRequests);
|
|
97
|
+
const loadedPages = await Promise.all(pagesToLoad.map((page) => this.goTo(page)));
|
|
98
|
+
results.push(...(0, flatMap_1.default)(loadedPages, (page) => page.items));
|
|
99
|
+
}
|
|
100
|
+
return results;
|
|
101
|
+
};
|
|
102
|
+
this.allSorted = async (compareFn) => {
|
|
103
|
+
const all = await this.all();
|
|
104
|
+
return all.sort(compareFn);
|
|
105
|
+
};
|
|
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
|