flowerbi 4.1.1 → 4.2.1
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/QueryColumn.d.ts +11 -0
- package/dist/QueryColumn.js +21 -2
- package/dist/QueryColumn.js.map +1 -1
- package/dist/QueryJson.d.ts +1 -1
- package/dist/executeQuery.d.ts +8 -0
- package/dist/executeQuery.js +60 -1
- package/dist/executeQuery.js.map +1 -1
- package/package.json +1 -1
- package/src/QueryColumn.ts +17 -1
- package/src/QueryJson.ts +1 -1
- package/src/executeQuery.ts +13 -0
package/dist/QueryColumn.d.ts
CHANGED
|
@@ -102,3 +102,14 @@ export declare class IntegerQueryColumn<T extends number | null = number> extend
|
|
|
102
102
|
constructor(name: string);
|
|
103
103
|
bitsIn(mask: number, value: NonNullable<T>[]): FilterJson;
|
|
104
104
|
}
|
|
105
|
+
export declare class StringQueryColumn<T extends string | null = string> extends QueryColumn<T> {
|
|
106
|
+
readonly name: string;
|
|
107
|
+
/**
|
|
108
|
+
* @param name The name, of the form `table.column`.
|
|
109
|
+
*/
|
|
110
|
+
constructor(name: string);
|
|
111
|
+
/**
|
|
112
|
+
* Produces a filter that requires this column to match a LIKE expression.
|
|
113
|
+
*/
|
|
114
|
+
like(value: T): FilterJson;
|
|
115
|
+
}
|
package/dist/QueryColumn.js
CHANGED
|
@@ -15,7 +15,7 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
15
15
|
};
|
|
16
16
|
})();
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.IntegerQueryColumn = exports.NumericQueryColumn = exports.QueryColumn = void 0;
|
|
18
|
+
exports.StringQueryColumn = exports.IntegerQueryColumn = exports.NumericQueryColumn = exports.QueryColumn = void 0;
|
|
19
19
|
/**
|
|
20
20
|
* A column from the schema, with a name and a data type. A whole schema of
|
|
21
21
|
* such declared columns can be auto-generated using the CLI.
|
|
@@ -138,7 +138,7 @@ var QueryColumn = /** @class */ (function () {
|
|
|
138
138
|
QueryColumn.prototype.notIn = function (value) {
|
|
139
139
|
return {
|
|
140
140
|
column: this.name,
|
|
141
|
-
operator: "IN",
|
|
141
|
+
operator: "NOT IN",
|
|
142
142
|
value: value,
|
|
143
143
|
};
|
|
144
144
|
};
|
|
@@ -193,4 +193,23 @@ var IntegerQueryColumn = /** @class */ (function (_super) {
|
|
|
193
193
|
return IntegerQueryColumn;
|
|
194
194
|
}(NumericQueryColumn));
|
|
195
195
|
exports.IntegerQueryColumn = IntegerQueryColumn;
|
|
196
|
+
var StringQueryColumn = /** @class */ (function (_super) {
|
|
197
|
+
__extends(StringQueryColumn, _super);
|
|
198
|
+
/**
|
|
199
|
+
* @param name The name, of the form `table.column`.
|
|
200
|
+
*/
|
|
201
|
+
function StringQueryColumn(name) {
|
|
202
|
+
var _this = _super.call(this, name) || this;
|
|
203
|
+
_this.name = name;
|
|
204
|
+
return _this;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Produces a filter that requires this column to match a LIKE expression.
|
|
208
|
+
*/
|
|
209
|
+
StringQueryColumn.prototype.like = function (value) {
|
|
210
|
+
return this.filter("LIKE", value);
|
|
211
|
+
};
|
|
212
|
+
return StringQueryColumn;
|
|
213
|
+
}(QueryColumn));
|
|
214
|
+
exports.StringQueryColumn = StringQueryColumn;
|
|
196
215
|
//# sourceMappingURL=QueryColumn.js.map
|
package/dist/QueryColumn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryColumn.js","sourceRoot":"","sources":["../src/QueryColumn.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAEA;;;GAGG;AACH;IACI;;OAEG;IACH,qBAA4B,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;IAElC,iCAAW,GAArB,UAAsB,eAAgC,EAAE,OAAsB;QAC1E,OAAO;YACH,MAAM,EAAE,IAAI,CAAC,IAAI;YACjB,QAAQ,EAAE,eAAe;YACzB,OAAO,SAAA;SACV,CAAC;IACN,CAAC;IAED;;;OAGG;IACH,2BAAK,GAAL,UAAM,OAAsB;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,mCAAa,GAAb,UAAc,OAAsB;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED;;;OAGG;IACH,yBAAG,GAAH,UAAI,OAAsB;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,yBAAG,GAAH,UAAI,OAAsB;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAES,4BAAM,GAAhB,UAAiB,QAAwB,EAAE,KAAQ;QAC/C,OAAO;YACH,MAAM,EAAE,IAAI,CAAC,IAAI;YACjB,QAAQ,UAAA;YACR,KAAK,OAAA;SACR,CAAC;IACN,CAAC;IAED;;OAEG;IACH,+BAAS,GAAT;QACI,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,gCAAU,GAAV;QACI,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,6BAAO,GAAP,UAAQ,KAAQ;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,gCAAU,GAAV,UAAW,KAAQ;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,iCAAW,GAAX,UAAY,KAAQ;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,8BAAQ,GAAR,UAAS,KAAQ;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,0CAAoB,GAApB,UAAqB,KAAQ;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,uCAAiB,GAAjB,UAAkB,KAAQ;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,wBAAE,GAAF,UAAG,KAA8C;QAC7C,OAAO;YACH,MAAM,EAAE,IAAI,CAAC,IAAI;YACjB,QAAQ,EAAE,IAAI;YACd,KAAK,OAAA;SACR,CAAC;IACN,CAAC;IAED;;;OAGG;IACH,2BAAK,GAAL,UAAM,KAA8C;QAChD,OAAO;YACH,MAAM,EAAE,IAAI,CAAC,IAAI;YACjB,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"QueryColumn.js","sourceRoot":"","sources":["../src/QueryColumn.ts"],"names":[],"mappings":"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"}
|
package/dist/QueryJson.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The allowed filter comparison operators.
|
|
3
3
|
*/
|
|
4
|
-
export declare type FilterOperator = "=" | "<>" | ">" | "<" | ">=" | "<=" | "IN" | "NOT IN" | "BITS IN";
|
|
4
|
+
export declare type FilterOperator = "=" | "<>" | ">" | "<" | ">=" | "<=" | "IN" | "NOT IN" | "BITS IN" | "LIKE";
|
|
5
5
|
/**
|
|
6
6
|
* The allowed value types for a filter.
|
|
7
7
|
*/
|
package/dist/executeQuery.d.ts
CHANGED
|
@@ -87,3 +87,11 @@ export interface ExpandedQueryResult<S extends QuerySelect, C extends QueryCalcu
|
|
|
87
87
|
* @param result The response payload from the API call.
|
|
88
88
|
*/
|
|
89
89
|
export declare function expandQueryResult<S extends QuerySelect, C extends QueryCalculations<S>>(select: S, result: QueryResultJson, calcs?: C): ExpandedQueryResult<S, C>;
|
|
90
|
+
/**
|
|
91
|
+
* The complete statically typed query mechanism.
|
|
92
|
+
*
|
|
93
|
+
* @param fetch Your API for performing FlowerBI queries in the JSON format
|
|
94
|
+
* @param query The query in statically-typed form
|
|
95
|
+
* @returns The query results in statically-typed form
|
|
96
|
+
*/
|
|
97
|
+
export declare function executeQuery<S extends QuerySelect, C extends QueryCalculations<S>>(fetch: QueryFetch, query: Query<S, C>): Promise<ExpandedQueryResult<S, C>>;
|
package/dist/executeQuery.js
CHANGED
|
@@ -1,6 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
2
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.expandQueryResult = exports.getAggregateValuesOnly = exports.expandQueryRecord = exports.jsonifyQuery = void 0;
|
|
39
|
+
exports.executeQuery = exports.expandQueryResult = exports.getAggregateValuesOnly = exports.expandQueryRecord = exports.jsonifyQuery = void 0;
|
|
4
40
|
var queryModel_1 = require("./queryModel");
|
|
5
41
|
var arrayHelpers_1 = require("./arrayHelpers");
|
|
6
42
|
function jsonifyCalculation(calculation, props) {
|
|
@@ -147,4 +183,27 @@ function expandQueryResult(select, result, calcs) {
|
|
|
147
183
|
};
|
|
148
184
|
}
|
|
149
185
|
exports.expandQueryResult = expandQueryResult;
|
|
186
|
+
/**
|
|
187
|
+
* The complete statically typed query mechanism.
|
|
188
|
+
*
|
|
189
|
+
* @param fetch Your API for performing FlowerBI queries in the JSON format
|
|
190
|
+
* @param query The query in statically-typed form
|
|
191
|
+
* @returns The query results in statically-typed form
|
|
192
|
+
*/
|
|
193
|
+
function executeQuery(fetch, query) {
|
|
194
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
195
|
+
var queryJson, resultJson;
|
|
196
|
+
return __generator(this, function (_a) {
|
|
197
|
+
switch (_a.label) {
|
|
198
|
+
case 0:
|
|
199
|
+
queryJson = jsonifyQuery(query);
|
|
200
|
+
return [4 /*yield*/, fetch(queryJson)];
|
|
201
|
+
case 1:
|
|
202
|
+
resultJson = _a.sent();
|
|
203
|
+
return [2 /*return*/, expandQueryResult(query.select, resultJson, query.calculations)];
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
exports.executeQuery = executeQuery;
|
|
150
209
|
//# sourceMappingURL=executeQuery.js.map
|
package/dist/executeQuery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeQuery.js","sourceRoot":"","sources":["../src/executeQuery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"executeQuery.js","sourceRoot":"","sources":["../src/executeQuery.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/QueryColumn.ts
CHANGED
|
@@ -136,7 +136,7 @@ export class QueryColumn<T extends FilterValue> {
|
|
|
136
136
|
notIn(value: T extends number | string ? T[] : never): FilterJson {
|
|
137
137
|
return {
|
|
138
138
|
column: this.name,
|
|
139
|
-
operator: "IN",
|
|
139
|
+
operator: "NOT IN",
|
|
140
140
|
value,
|
|
141
141
|
};
|
|
142
142
|
}
|
|
@@ -184,3 +184,19 @@ export class IntegerQueryColumn<T extends number | null = number> extends Numeri
|
|
|
184
184
|
};
|
|
185
185
|
}
|
|
186
186
|
}
|
|
187
|
+
|
|
188
|
+
export class StringQueryColumn<T extends string | null = string> extends QueryColumn<T> {
|
|
189
|
+
/**
|
|
190
|
+
* @param name The name, of the form `table.column`.
|
|
191
|
+
*/
|
|
192
|
+
constructor(public readonly name: string) {
|
|
193
|
+
super(name);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Produces a filter that requires this column to match a LIKE expression.
|
|
198
|
+
*/
|
|
199
|
+
like(value: T) {
|
|
200
|
+
return this.filter("LIKE", value);
|
|
201
|
+
}
|
|
202
|
+
}
|
package/src/QueryJson.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The allowed filter comparison operators.
|
|
3
3
|
*/
|
|
4
|
-
export type FilterOperator = "=" | "<>" | ">" | "<" | ">=" | "<=" | "IN" | "NOT IN" | "BITS IN";
|
|
4
|
+
export type FilterOperator = "=" | "<>" | ">" | "<" | ">=" | "<=" | "IN" | "NOT IN" | "BITS IN" | "LIKE";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* The allowed value types for a filter.
|
package/src/executeQuery.ts
CHANGED
|
@@ -243,3 +243,16 @@ export function expandQueryResult<S extends QuerySelect, C extends QueryCalculat
|
|
|
243
243
|
totals: result.totals && getAggregateValuesOnly(select, result.totals, calcs),
|
|
244
244
|
};
|
|
245
245
|
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* The complete statically typed query mechanism.
|
|
249
|
+
*
|
|
250
|
+
* @param fetch Your API for performing FlowerBI queries in the JSON format
|
|
251
|
+
* @param query The query in statically-typed form
|
|
252
|
+
* @returns The query results in statically-typed form
|
|
253
|
+
*/
|
|
254
|
+
export async function executeQuery<S extends QuerySelect, C extends QueryCalculations<S>>(fetch: QueryFetch, query: Query<S, C>) {
|
|
255
|
+
const queryJson = jsonifyQuery(query);
|
|
256
|
+
const resultJson = await fetch(queryJson);
|
|
257
|
+
return expandQueryResult<S, C>(query.select, resultJson, query.calculations);
|
|
258
|
+
}
|