@powersync/service-sync-rules 0.0.0-dev-20250122110924 → 0.0.0-dev-20250312112247
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/BaseSqlDataQuery.js +11 -4
- package/dist/BaseSqlDataQuery.js.map +1 -1
- package/dist/BucketDescription.d.ts +27 -0
- package/dist/BucketDescription.js +5 -0
- package/dist/BucketDescription.js.map +1 -0
- package/dist/BucketParameterQuerier.d.ts +56 -0
- package/dist/BucketParameterQuerier.js +38 -0
- package/dist/BucketParameterQuerier.js.map +1 -0
- package/dist/DartSchemaGenerator.d.ts +9 -0
- package/dist/DartSchemaGenerator.js +75 -21
- package/dist/DartSchemaGenerator.js.map +1 -1
- package/dist/ExpressionType.js +15 -14
- package/dist/ExpressionType.js.map +1 -1
- package/dist/IdSequence.js +1 -3
- package/dist/IdSequence.js.map +1 -1
- package/dist/JsLegacySchemaGenerator.js +4 -7
- package/dist/JsLegacySchemaGenerator.js.map +1 -1
- package/dist/SchemaGenerator.js +2 -3
- package/dist/SchemaGenerator.js.map +1 -1
- package/dist/SqlBucketDescriptor.d.ts +6 -3
- package/dist/SqlBucketDescriptor.js +29 -15
- package/dist/SqlBucketDescriptor.js.map +1 -1
- package/dist/SqlDataQuery.js +3 -3
- package/dist/SqlDataQuery.js.map +1 -1
- package/dist/SqlParameterQuery.d.ts +10 -12
- package/dist/SqlParameterQuery.js +81 -36
- package/dist/SqlParameterQuery.js.map +1 -1
- package/dist/SqlSyncRules.d.ts +4 -9
- package/dist/SqlSyncRules.js +25 -25
- package/dist/SqlSyncRules.js.map +1 -1
- package/dist/StaticSchema.js +5 -0
- package/dist/StaticSchema.js.map +1 -1
- package/dist/StaticSqlParameterQuery.d.ts +3 -1
- package/dist/StaticSqlParameterQuery.js +31 -7
- package/dist/StaticSqlParameterQuery.js.map +1 -1
- package/dist/TablePattern.js +3 -0
- package/dist/TablePattern.js.map +1 -1
- package/dist/TableQuerySchema.js +2 -0
- package/dist/TableQuerySchema.js.map +1 -1
- package/dist/TableValuedFunctionSqlParameterQuery.d.ts +4 -2
- package/dist/TableValuedFunctionSqlParameterQuery.js +30 -9
- package/dist/TableValuedFunctionSqlParameterQuery.js.map +1 -1
- package/dist/TableValuedFunctions.js +1 -1
- package/dist/TableValuedFunctions.js.map +1 -1
- package/dist/TsSchemaGenerator.js +6 -0
- package/dist/TsSchemaGenerator.js.map +1 -1
- package/dist/errors.js +8 -2
- package/dist/errors.js.map +1 -1
- package/dist/events/SqlEventDescriptor.js +3 -1
- package/dist/events/SqlEventDescriptor.js.map +1 -1
- package/dist/events/SqlEventSourceQuery.js +2 -3
- package/dist/events/SqlEventSourceQuery.js.map +1 -1
- package/dist/generators.d.ts +2 -1
- package/dist/generators.js +3 -2
- package/dist/generators.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/json_schema.js +4 -0
- package/dist/json_schema.js.map +1 -1
- package/dist/sql_filters.d.ts +3 -0
- package/dist/sql_filters.js +28 -1
- package/dist/sql_filters.js.map +1 -1
- package/dist/sql_functions.d.ts +1 -1
- package/dist/sql_functions.js +5 -2
- package/dist/sql_functions.js.map +1 -1
- package/dist/types.d.ts +4 -5
- package/dist/types.js +12 -1
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +4 -0
- package/dist/utils.js +9 -0
- package/dist/utils.js.map +1 -1
- package/package.json +2 -2
- package/schema/sync_rules.json +4 -0
package/dist/BaseSqlDataQuery.js
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { filterJsonRow } from './utils.js';
|
|
2
2
|
export class BaseSqlDataQuery {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
sourceTable;
|
|
4
|
+
table;
|
|
5
|
+
sql;
|
|
6
|
+
columns;
|
|
7
|
+
extractors = [];
|
|
8
|
+
descriptor_name;
|
|
9
|
+
bucket_parameters;
|
|
10
|
+
tools;
|
|
11
|
+
ruleId;
|
|
12
|
+
errors = [];
|
|
13
|
+
constructor() { }
|
|
7
14
|
applies(table) {
|
|
8
15
|
return this.sourceTable?.matches(table);
|
|
9
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseSqlDataQuery.js","sourceRoot":"","sources":["../src/BaseSqlDataQuery.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAO3C,MAAM,OAAO,gBAAgB;
|
|
1
|
+
{"version":3,"file":"BaseSqlDataQuery.js","sourceRoot":"","sources":["../src/BaseSqlDataQuery.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAO3C,MAAM,OAAO,gBAAgB;IAC3B,WAAW,CAAgB;IAC3B,KAAK,CAAU;IACf,GAAG,CAAU;IACb,OAAO,CAAoB;IAC3B,UAAU,GAAwB,EAAE,CAAC;IACrC,eAAe,CAAU;IACzB,iBAAiB,CAAY;IAC7B,KAAK,CAAY;IAEjB,MAAM,CAAU;IAEhB,MAAM,GAAmB,EAAE,CAAC;IAE5B,gBAAe,CAAC;IAEhB,OAAO,CAAC,KAA2B;QACjC,OAAO,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,oBAAoB,CAAC,KAA2B,EAAE,GAAc;QAC9D,IAAI,IAAI,CAAC,WAAY,CAAC,UAAU,EAAE,CAAC;YACjC,OAAO;gBACL,GAAG,GAAG;gBACN,aAAa,EAAE,IAAI,CAAC,WAAY,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;aACrD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IAED,aAAa,CAAC,WAAmB;QAC/B,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;YAC/B,sCAAsC;YACtC,OAAO,WAAW,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,KAAM,CAAC;QACrB,CAAC;IACH,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,WAAY,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAY,CAAC,YAAY,CAAC;IACtF,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,OAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7B,OAAO,IAAI,CAAC,KAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB,CAAC,MAAoB;QACnC,IAAI,MAAM,GAAoD,EAAE,CAAC;QAEjE,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;YAC/B,mBAAmB;YACnB,KAAK,IAAI,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,WAAY,CAAC,EAAE,CAAC;gBAC5D,IAAI,MAAM,GAAqC,EAAE,CAAC;gBAElD,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;gBAE9C,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC;oBAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;iBAC/B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YACN,iBAAiB;YACjB,IAAI,MAAM,GAAqC,EAAE,CAAC;YAClD,KAAK,IAAI,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,WAAY,CAAC,EAAE,CAAC;gBAC5D,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAChD,CAAC;YACD,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,IAAI,CAAC,KAAM;gBACjB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;aAC/B,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,YAAY,CAAC,MAAuB;QAC5C,IAAI,MAAM,GAAc,EAAE,CAAC;QAC3B,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACtC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAES,mBAAmB,CAAC,WAA8B,EAAE,MAAwC;QACpG,MAAM,WAAW,GAAgB;YAC/B,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBAC3B,IAAI,KAAK,IAAI,IAAI,CAAC,KAAM,EAAE,CAAC;oBACzB,OAAO,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACN,2BAA2B;oBAC3B,OAAO,SAAS,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;gBACpB,IAAI,KAAK,IAAI,IAAI,CAAC,KAAM,EAAE,CAAC;oBACzB,OAAO,WAAW,CAAC,UAAU,EAAE,CAAC;gBAClC,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;SACF,CAAC;QACF,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACtC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The priority in which to synchronize buckets.
|
|
3
|
+
*
|
|
4
|
+
* Lower numbers represent higher priorities.
|
|
5
|
+
* Generally, the sync service _may_ synchronize buckets with higher priorities first.
|
|
6
|
+
* Priorities also refine the consistency notion by the sync service in the way that clients
|
|
7
|
+
* may choose to publish data when all buckets of a certain priority have been synchronized.
|
|
8
|
+
* So, when clients are synchronizing buckets with different priorities, they will only get
|
|
9
|
+
* consistent views within each priority.
|
|
10
|
+
*
|
|
11
|
+
* Additionally, data from buckets with priority 0 may be made visible when clients still
|
|
12
|
+
* have data in their upload queue.
|
|
13
|
+
*/
|
|
14
|
+
export type BucketPriority = 0 | 1 | 2 | 3;
|
|
15
|
+
export declare const defaultBucketPriority: BucketPriority;
|
|
16
|
+
export declare const isValidPriority: (i: number) => i is BucketPriority;
|
|
17
|
+
export interface BucketDescription {
|
|
18
|
+
/**
|
|
19
|
+
* The id of the bucket, which is derived from the name of the bucket's definition
|
|
20
|
+
* in the sync rules as well as the values returned by the parameter queries.
|
|
21
|
+
*/
|
|
22
|
+
bucket: string;
|
|
23
|
+
/**
|
|
24
|
+
* The priority used to synchronize this bucket, derived from its definition.
|
|
25
|
+
*/
|
|
26
|
+
priority: BucketPriority;
|
|
27
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BucketDescription.js","sourceRoot":"","sources":["../src/BucketDescription.ts"],"names":[],"mappings":"AAeA,MAAM,CAAC,MAAM,qBAAqB,GAAmB,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAS,EAAuB,EAAE;IAChE,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { BucketDescription } from './BucketDescription.js';
|
|
2
|
+
import { RequestParameters, SqliteJsonRow, SqliteJsonValue } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Represents a set of parameter queries for a specific request.
|
|
5
|
+
*/
|
|
6
|
+
export interface BucketParameterQuerier {
|
|
7
|
+
/**
|
|
8
|
+
* These buckets do not change for the lifetime of the connection.
|
|
9
|
+
*
|
|
10
|
+
* This includes parameter queries such as:
|
|
11
|
+
*
|
|
12
|
+
* select request.user_id() as user_id()
|
|
13
|
+
* select value as project_id from json_each(request.jwt() -> 'project_ids')
|
|
14
|
+
*/
|
|
15
|
+
readonly staticBuckets: BucketDescription[];
|
|
16
|
+
/**
|
|
17
|
+
* True if there are dynamic buckets, meaning queryDynamicBucketDescriptions() should be used.
|
|
18
|
+
*
|
|
19
|
+
* If this is false, queryDynamicBucketDescriptions() will always return an empty array,
|
|
20
|
+
* and parameterQueryLookups.length == 0.
|
|
21
|
+
*/
|
|
22
|
+
readonly hasDynamicBuckets: boolean;
|
|
23
|
+
readonly parameterQueryLookups: ParameterLookup[];
|
|
24
|
+
/**
|
|
25
|
+
* These buckets depend on parameter storage, and needs to be retrieved dynamically for each checkpoint.
|
|
26
|
+
*
|
|
27
|
+
* The ParameterLookupSource should perform the query for the current checkpoint - that is not passed
|
|
28
|
+
* as a parameter.
|
|
29
|
+
*
|
|
30
|
+
* This includes parameter queries such as:
|
|
31
|
+
*
|
|
32
|
+
* select id as user_id from users where users.id = request.user_id()
|
|
33
|
+
*/
|
|
34
|
+
queryDynamicBucketDescriptions(source: ParameterLookupSource): Promise<BucketDescription[]>;
|
|
35
|
+
}
|
|
36
|
+
export interface ParameterLookupSource {
|
|
37
|
+
getParameterSets: (lookups: ParameterLookup[]) => Promise<SqliteJsonRow[]>;
|
|
38
|
+
}
|
|
39
|
+
export interface QueryBucketDescriptorOptions extends ParameterLookupSource {
|
|
40
|
+
parameters: RequestParameters;
|
|
41
|
+
}
|
|
42
|
+
export declare function mergeBucketParameterQueriers(queriers: BucketParameterQuerier[]): BucketParameterQuerier;
|
|
43
|
+
/**
|
|
44
|
+
* Represents an equality filter from a parameter query.
|
|
45
|
+
*
|
|
46
|
+
* Other query types are not supported yet.
|
|
47
|
+
*/
|
|
48
|
+
export declare class ParameterLookup {
|
|
49
|
+
readonly values: SqliteJsonValue[];
|
|
50
|
+
static normalized(bucketDefinitionName: string, queryIndex: string, values: SqliteJsonValue[]): ParameterLookup;
|
|
51
|
+
/**
|
|
52
|
+
*
|
|
53
|
+
* @param values must be pre-normalized (any integer converted into bigint)
|
|
54
|
+
*/
|
|
55
|
+
constructor(values: SqliteJsonValue[]);
|
|
56
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { normalizeParameterValue } from './utils.js';
|
|
2
|
+
export function mergeBucketParameterQueriers(queriers) {
|
|
3
|
+
const parameterQueryLookups = queriers.flatMap((q) => q.parameterQueryLookups);
|
|
4
|
+
return {
|
|
5
|
+
staticBuckets: queriers.flatMap((q) => q.staticBuckets),
|
|
6
|
+
hasDynamicBuckets: parameterQueryLookups.length > 0,
|
|
7
|
+
parameterQueryLookups: parameterQueryLookups,
|
|
8
|
+
async queryDynamicBucketDescriptions(source) {
|
|
9
|
+
let results = [];
|
|
10
|
+
for (let q of queriers) {
|
|
11
|
+
if (q.hasDynamicBuckets) {
|
|
12
|
+
results.push(...(await q.queryDynamicBucketDescriptions(source)));
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return results;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Represents an equality filter from a parameter query.
|
|
21
|
+
*
|
|
22
|
+
* Other query types are not supported yet.
|
|
23
|
+
*/
|
|
24
|
+
export class ParameterLookup {
|
|
25
|
+
// bucket definition name, parameter query index, ...lookup values
|
|
26
|
+
values;
|
|
27
|
+
static normalized(bucketDefinitionName, queryIndex, values) {
|
|
28
|
+
return new ParameterLookup([bucketDefinitionName, queryIndex, ...values.map(normalizeParameterValue)]);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
*
|
|
32
|
+
* @param values must be pre-normalized (any integer converted into bigint)
|
|
33
|
+
*/
|
|
34
|
+
constructor(values) {
|
|
35
|
+
this.values = values;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=BucketParameterQuerier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BucketParameterQuerier.js","sourceRoot":"","sources":["../src/BucketParameterQuerier.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AA+CrD,MAAM,UAAU,4BAA4B,CAAC,QAAkC;IAC7E,MAAM,qBAAqB,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAC/E,OAAO;QACL,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;QACvD,iBAAiB,EAAE,qBAAqB,CAAC,MAAM,GAAG,CAAC;QACnD,qBAAqB,EAAE,qBAAqB;QAC5C,KAAK,CAAC,8BAA8B,CAAC,MAA6B;YAChE,IAAI,OAAO,GAAwB,EAAE,CAAC;YACtC,KAAK,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACvB,IAAI,CAAC,CAAC,iBAAiB,EAAE,CAAC;oBACxB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,eAAe;IAC1B,kEAAkE;IACzD,MAAM,CAAoB;IAEnC,MAAM,CAAC,UAAU,CAAC,oBAA4B,EAAE,UAAkB,EAAE,MAAyB;QAC3F,OAAO,IAAI,eAAe,CAAC,CAAC,oBAAoB,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;IACzG,CAAC;IAED;;;OAGG;IACH,YAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -10,3 +10,12 @@ export declare class DartSchemaGenerator extends SchemaGenerator {
|
|
|
10
10
|
private generateTable;
|
|
11
11
|
private generateColumn;
|
|
12
12
|
}
|
|
13
|
+
export declare class DartFlutterFlowSchemaGenerator extends SchemaGenerator {
|
|
14
|
+
readonly key = "dart-flutterflow";
|
|
15
|
+
readonly label = "FlutterFlow";
|
|
16
|
+
readonly mediaType = "application/json";
|
|
17
|
+
readonly fileName = "schema.json";
|
|
18
|
+
generate(source: SqlSyncRules, schema: SourceSchema, options?: GenerateSchemaOptions): string;
|
|
19
|
+
private generateTable;
|
|
20
|
+
private generateColumn;
|
|
21
|
+
}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import { TYPE_INTEGER, TYPE_REAL, TYPE_TEXT } from './ExpressionType.js';
|
|
1
|
+
import { ExpressionType, TYPE_INTEGER, TYPE_REAL, TYPE_TEXT } from './ExpressionType.js';
|
|
2
2
|
import { SchemaGenerator } from './SchemaGenerator.js';
|
|
3
3
|
export class DartSchemaGenerator extends SchemaGenerator {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
this.mediaType = 'text/x-dart';
|
|
9
|
-
this.fileName = 'schema.dart';
|
|
10
|
-
}
|
|
4
|
+
key = 'dart';
|
|
5
|
+
label = 'Dart';
|
|
6
|
+
mediaType = 'text/x-dart';
|
|
7
|
+
fileName = 'schema.dart';
|
|
11
8
|
generate(source, schema, options) {
|
|
12
9
|
const tables = super.getAllTables(source, schema);
|
|
13
10
|
return `Schema([
|
|
@@ -38,19 +35,76 @@ ${generated.join('\n')}
|
|
|
38
35
|
])`;
|
|
39
36
|
}
|
|
40
37
|
generateColumn(column) {
|
|
41
|
-
|
|
42
|
-
if (t.typeFlags & TYPE_TEXT) {
|
|
43
|
-
return `Column.text('${column.name}')`;
|
|
44
|
-
}
|
|
45
|
-
else if (t.typeFlags & TYPE_REAL) {
|
|
46
|
-
return `Column.real('${column.name}')`;
|
|
47
|
-
}
|
|
48
|
-
else if (t.typeFlags & TYPE_INTEGER) {
|
|
49
|
-
return `Column.integer('${column.name}')`;
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
return `Column.text('${column.name}')`;
|
|
53
|
-
}
|
|
38
|
+
return `Column.${dartColumnType(column)}('${column.name}')`;
|
|
54
39
|
}
|
|
55
40
|
}
|
|
41
|
+
export class DartFlutterFlowSchemaGenerator extends SchemaGenerator {
|
|
42
|
+
key = 'dart-flutterflow';
|
|
43
|
+
label = 'FlutterFlow';
|
|
44
|
+
mediaType = 'application/json';
|
|
45
|
+
fileName = 'schema.json';
|
|
46
|
+
generate(source, schema, options) {
|
|
47
|
+
const serializedTables = this.getAllTables(source, schema).map((e) => this.generateTable(e.name, e.columns));
|
|
48
|
+
// Not all FlutterFlow apps will use the attachments queue table, but it needs to be part of the app schema if used
|
|
49
|
+
// and does no harm otherwise. So, we just include it by default.
|
|
50
|
+
serializedTables.push(this.generateTable('attachments_queue', [
|
|
51
|
+
{
|
|
52
|
+
name: 'filename',
|
|
53
|
+
type: ExpressionType.TEXT
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: 'local_uri',
|
|
57
|
+
type: ExpressionType.TEXT
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'timestamp',
|
|
61
|
+
type: ExpressionType.INTEGER
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: 'size',
|
|
65
|
+
type: ExpressionType.INTEGER
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: 'media_type',
|
|
69
|
+
type: ExpressionType.TEXT
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: 'state',
|
|
73
|
+
type: ExpressionType.INTEGER
|
|
74
|
+
}
|
|
75
|
+
], true));
|
|
76
|
+
return JSON.stringify({ tables: serializedTables });
|
|
77
|
+
}
|
|
78
|
+
generateTable(name, columns, localOnly = false) {
|
|
79
|
+
return {
|
|
80
|
+
name,
|
|
81
|
+
view_name: null,
|
|
82
|
+
local_only: localOnly,
|
|
83
|
+
insert_only: false,
|
|
84
|
+
columns: columns.map(this.generateColumn),
|
|
85
|
+
indexes: []
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
generateColumn(definition) {
|
|
89
|
+
return {
|
|
90
|
+
name: definition.name,
|
|
91
|
+
type: dartColumnType(definition)
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const dartColumnType = (def) => {
|
|
96
|
+
const t = def.type;
|
|
97
|
+
if (t.typeFlags & TYPE_TEXT) {
|
|
98
|
+
return 'text';
|
|
99
|
+
}
|
|
100
|
+
else if (t.typeFlags & TYPE_REAL) {
|
|
101
|
+
return 'real';
|
|
102
|
+
}
|
|
103
|
+
else if (t.typeFlags & TYPE_INTEGER) {
|
|
104
|
+
return 'integer';
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
return 'text';
|
|
108
|
+
}
|
|
109
|
+
};
|
|
56
110
|
//# sourceMappingURL=DartSchemaGenerator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DartSchemaGenerator.js","sourceRoot":"","sources":["../src/DartSchemaGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"DartSchemaGenerator.js","sourceRoot":"","sources":["../src/DartSchemaGenerator.ts"],"names":[],"mappings":"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"}
|
package/dist/ExpressionType.js
CHANGED
|
@@ -4,6 +4,21 @@ export const TYPE_TEXT = 2;
|
|
|
4
4
|
export const TYPE_INTEGER = 4;
|
|
5
5
|
export const TYPE_REAL = 8;
|
|
6
6
|
export class ExpressionType {
|
|
7
|
+
typeFlags;
|
|
8
|
+
/**
|
|
9
|
+
* Always null.
|
|
10
|
+
*/
|
|
11
|
+
static NONE = new ExpressionType(0);
|
|
12
|
+
/**
|
|
13
|
+
* Any type.
|
|
14
|
+
*/
|
|
15
|
+
static ANY = new ExpressionType(TYPE_BLOB | TYPE_TEXT | TYPE_INTEGER | TYPE_REAL);
|
|
16
|
+
static TEXT = new ExpressionType(TYPE_TEXT);
|
|
17
|
+
static INTEGER = new ExpressionType(TYPE_INTEGER);
|
|
18
|
+
static REAL = new ExpressionType(TYPE_REAL);
|
|
19
|
+
static BLOB = new ExpressionType(TYPE_BLOB);
|
|
20
|
+
static ANY_JSON = new ExpressionType(TYPE_TEXT | TYPE_INTEGER | TYPE_REAL);
|
|
21
|
+
static NUMERIC = new ExpressionType(TYPE_INTEGER | TYPE_REAL);
|
|
7
22
|
static of(typeFlags) {
|
|
8
23
|
// TODO: cache?
|
|
9
24
|
return new ExpressionType(typeFlags);
|
|
@@ -47,20 +62,6 @@ export class ExpressionType {
|
|
|
47
62
|
return this.typeFlags == TYPE_NONE;
|
|
48
63
|
}
|
|
49
64
|
}
|
|
50
|
-
/**
|
|
51
|
-
* Always null.
|
|
52
|
-
*/
|
|
53
|
-
ExpressionType.NONE = new ExpressionType(0);
|
|
54
|
-
/**
|
|
55
|
-
* Any type.
|
|
56
|
-
*/
|
|
57
|
-
ExpressionType.ANY = new ExpressionType(TYPE_BLOB | TYPE_TEXT | TYPE_INTEGER | TYPE_REAL);
|
|
58
|
-
ExpressionType.TEXT = new ExpressionType(TYPE_TEXT);
|
|
59
|
-
ExpressionType.INTEGER = new ExpressionType(TYPE_INTEGER);
|
|
60
|
-
ExpressionType.REAL = new ExpressionType(TYPE_REAL);
|
|
61
|
-
ExpressionType.BLOB = new ExpressionType(TYPE_BLOB);
|
|
62
|
-
ExpressionType.ANY_JSON = new ExpressionType(TYPE_TEXT | TYPE_INTEGER | TYPE_REAL);
|
|
63
|
-
ExpressionType.NUMERIC = new ExpressionType(TYPE_INTEGER | TYPE_REAL);
|
|
64
65
|
/**
|
|
65
66
|
* Here only for backwards-compatibility only.
|
|
66
67
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpressionType.js","sourceRoot":"","sources":["../src/ExpressionType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC;AAC3B,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC;AAC3B,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC;AAC3B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC;AAU3B,MAAM,OAAO,cAAc;
|
|
1
|
+
{"version":3,"file":"ExpressionType.js","sourceRoot":"","sources":["../src/ExpressionType.ts"],"names":[],"mappings":"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"}
|
package/dist/IdSequence.js
CHANGED
package/dist/IdSequence.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdSequence.js","sourceRoot":"","sources":["../src/IdSequence.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"IdSequence.js","sourceRoot":"","sources":["../src/IdSequence.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAU;IACb,KAAK,GAAG,CAAC,CAAC;IAElB,MAAM;QACJ,OAAO,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;CACF"}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { TYPE_INTEGER, TYPE_REAL, TYPE_TEXT } from './ExpressionType.js';
|
|
2
2
|
import { SchemaGenerator } from './SchemaGenerator.js';
|
|
3
3
|
export class JsLegacySchemaGenerator extends SchemaGenerator {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
this.mediaType = 'text/javascript';
|
|
9
|
-
this.fileName = 'schema.js';
|
|
10
|
-
}
|
|
4
|
+
key = 'jsLegacy';
|
|
5
|
+
label = 'JavaScript (legacy syntax)';
|
|
6
|
+
mediaType = 'text/javascript';
|
|
7
|
+
fileName = 'schema.js';
|
|
11
8
|
generate(source, schema) {
|
|
12
9
|
const tables = super.getAllTables(source, schema);
|
|
13
10
|
return `new Schema([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsLegacySchemaGenerator.js","sourceRoot":"","sources":["../src/JsLegacySchemaGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD,MAAM,OAAO,uBAAwB,SAAQ,eAAe;
|
|
1
|
+
{"version":3,"file":"JsLegacySchemaGenerator.js","sourceRoot":"","sources":["../src/JsLegacySchemaGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD,MAAM,OAAO,uBAAwB,SAAQ,eAAe;IACjD,GAAG,GAAG,UAAU,CAAC;IACjB,KAAK,GAAG,4BAA4B,CAAC;IACrC,SAAS,GAAG,iBAAiB,CAAC;IAC9B,QAAQ,GAAG,WAAW,CAAC;IAEhC,QAAQ,CAAC,MAAoB,EAAE,MAAoB;QACjD,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAElD,OAAO;IACP,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;;CAErF,CAAC;IACA,CAAC;IAEO,aAAa,CAAC,IAAY,EAAE,OAA2B;QAC7D,OAAO;aACE,IAAI;;QAET,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;;KAE/D,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,MAAwB;QAC7C,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;YAC5B,OAAO,uBAAuB,MAAM,CAAC,IAAI,6BAA6B,CAAC;QACzE,CAAC;aAAM,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;YACnC,OAAO,uBAAuB,MAAM,CAAC,IAAI,6BAA6B,CAAC;QACzE,CAAC;aAAM,IAAI,CAAC,CAAC,SAAS,GAAG,YAAY,EAAE,CAAC;YACtC,OAAO,uBAAuB,MAAM,CAAC,IAAI,gCAAgC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,OAAO,uBAAuB,MAAM,CAAC,IAAI,6BAA6B,CAAC;QACzE,CAAC;IACH,CAAC;CACF"}
|
package/dist/SchemaGenerator.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
export class SchemaGenerator {
|
|
2
2
|
getAllTables(source, schema) {
|
|
3
|
-
var _a, _b, _c;
|
|
4
3
|
let tables = {};
|
|
5
4
|
for (let descriptor of source.bucket_descriptors) {
|
|
6
5
|
for (let query of descriptor.data_queries) {
|
|
7
6
|
const outTables = query.getColumnOutputs(schema);
|
|
8
7
|
for (let table of outTables) {
|
|
9
|
-
tables[
|
|
8
|
+
tables[table.name] ??= {};
|
|
10
9
|
for (let column of table.columns) {
|
|
11
10
|
if (column.name != 'id') {
|
|
12
|
-
|
|
11
|
+
tables[table.name][column.name] ??= column;
|
|
13
12
|
}
|
|
14
13
|
}
|
|
15
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaGenerator.js","sourceRoot":"","sources":["../src/SchemaGenerator.ts"],"names":[],"mappings":"AAQA,MAAM,OAAgB,eAAe;IACzB,YAAY,CAAC,MAAoB,EAAE,MAAoB
|
|
1
|
+
{"version":3,"file":"SchemaGenerator.js","sourceRoot":"","sources":["../src/SchemaGenerator.ts"],"names":[],"mappings":"AAQA,MAAM,OAAgB,eAAe;IACzB,YAAY,CAAC,MAAoB,EAAE,MAAoB;QAC/D,IAAI,MAAM,GAAqD,EAAE,CAAC;QAElE,KAAK,IAAI,UAAU,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACjD,KAAK,IAAI,KAAK,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;gBAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACjD,KAAK,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;oBAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBAC1B,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;wBACjC,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;4BACxB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;wBAC7C,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE;YACpD,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;aAChC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CAQF"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { BucketDescription } from './BucketDescription.js';
|
|
2
|
+
import { BucketParameterQuerier } from './BucketParameterQuerier.js';
|
|
1
3
|
import { IdSequence } from './IdSequence.js';
|
|
2
4
|
import { SourceTableInterface } from './SourceTableInterface.js';
|
|
3
5
|
import { SqlDataQuery } from './SqlDataQuery.js';
|
|
@@ -6,7 +8,7 @@ import { SyncRulesOptions } from './SqlSyncRules.js';
|
|
|
6
8
|
import { StaticSqlParameterQuery } from './StaticSqlParameterQuery.js';
|
|
7
9
|
import { TablePattern } from './TablePattern.js';
|
|
8
10
|
import { SqlRuleError } from './errors.js';
|
|
9
|
-
import {
|
|
11
|
+
import { EvaluatedParametersResult, EvaluateRowOptions, EvaluationResult, QueryParseOptions, RequestParameters, SqliteRow } from './types.js';
|
|
10
12
|
export interface QueryParseResult {
|
|
11
13
|
/**
|
|
12
14
|
* True if parsed in some form, even if there are errors.
|
|
@@ -30,8 +32,9 @@ export declare class SqlBucketDescriptor {
|
|
|
30
32
|
addParameterQuery(sql: string, options: QueryParseOptions): QueryParseResult;
|
|
31
33
|
evaluateRow(options: EvaluateRowOptions): EvaluationResult[];
|
|
32
34
|
evaluateParameterRow(sourceTable: SourceTableInterface, row: SqliteRow): EvaluatedParametersResult[];
|
|
33
|
-
|
|
34
|
-
|
|
35
|
+
getBucketParameterQuerier(parameters: RequestParameters): BucketParameterQuerier;
|
|
36
|
+
getStaticBucketDescriptions(parameters: RequestParameters): BucketDescription[];
|
|
37
|
+
hasDynamicBucketQueries(): boolean;
|
|
35
38
|
getSourceTables(): Set<TablePattern>;
|
|
36
39
|
tableSyncsData(table: SourceTableInterface): boolean;
|
|
37
40
|
tableSyncsParameters(table: SourceTableInterface): boolean;
|
|
@@ -1,18 +1,22 @@
|
|
|
1
|
+
import { mergeBucketParameterQueriers } from './BucketParameterQuerier.js';
|
|
1
2
|
import { IdSequence } from './IdSequence.js';
|
|
2
3
|
import { SqlDataQuery } from './SqlDataQuery.js';
|
|
3
4
|
import { SqlParameterQuery } from './SqlParameterQuery.js';
|
|
4
5
|
export class SqlBucketDescriptor {
|
|
6
|
+
idSequence;
|
|
7
|
+
name;
|
|
8
|
+
bucket_parameters;
|
|
5
9
|
constructor(name, idSequence) {
|
|
6
10
|
this.idSequence = idSequence;
|
|
7
|
-
/**
|
|
8
|
-
* source table -> queries
|
|
9
|
-
*/
|
|
10
|
-
this.data_queries = [];
|
|
11
|
-
this.parameter_queries = [];
|
|
12
|
-
this.global_parameter_queries = [];
|
|
13
|
-
this.parameterIdSequence = new IdSequence();
|
|
14
11
|
this.name = name;
|
|
15
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* source table -> queries
|
|
15
|
+
*/
|
|
16
|
+
data_queries = [];
|
|
17
|
+
parameter_queries = [];
|
|
18
|
+
global_parameter_queries = [];
|
|
19
|
+
parameterIdSequence = new IdSequence();
|
|
16
20
|
addDataQuery(sql, options) {
|
|
17
21
|
if (this.bucket_parameters == null) {
|
|
18
22
|
throw new Error('Bucket parameters must be defined');
|
|
@@ -66,19 +70,29 @@ export class SqlBucketDescriptor {
|
|
|
66
70
|
}
|
|
67
71
|
return results;
|
|
68
72
|
}
|
|
69
|
-
|
|
73
|
+
getBucketParameterQuerier(parameters) {
|
|
74
|
+
const staticBuckets = this.getStaticBucketDescriptions(parameters);
|
|
75
|
+
const staticQuerier = {
|
|
76
|
+
staticBuckets,
|
|
77
|
+
hasDynamicBuckets: false,
|
|
78
|
+
parameterQueryLookups: [],
|
|
79
|
+
queryDynamicBucketDescriptions: async () => []
|
|
80
|
+
};
|
|
81
|
+
if (this.parameter_queries.length == 0) {
|
|
82
|
+
return staticQuerier;
|
|
83
|
+
}
|
|
84
|
+
const dynamicQueriers = this.parameter_queries.map((query) => query.getBucketParameterQuerier(parameters));
|
|
85
|
+
return mergeBucketParameterQueriers([staticQuerier, ...dynamicQueriers]);
|
|
86
|
+
}
|
|
87
|
+
getStaticBucketDescriptions(parameters) {
|
|
70
88
|
let results = [];
|
|
71
89
|
for (let query of this.global_parameter_queries) {
|
|
72
|
-
results.push(...query.
|
|
90
|
+
results.push(...query.getStaticBucketDescriptions(parameters));
|
|
73
91
|
}
|
|
74
92
|
return results;
|
|
75
93
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
for (let query of this.parameter_queries) {
|
|
79
|
-
result.push(...(await query.queryBucketIds(options)));
|
|
80
|
-
}
|
|
81
|
-
return result;
|
|
94
|
+
hasDynamicBucketQueries() {
|
|
95
|
+
return this.parameter_queries.length > 0;
|
|
82
96
|
}
|
|
83
97
|
getSourceTables() {
|
|
84
98
|
let result = new Set();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlBucketDescriptor.js","sourceRoot":"","sources":["../src/SqlBucketDescriptor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SqlBucketDescriptor.js","sourceRoot":"","sources":["../src/SqlBucketDescriptor.ts"],"names":[],"mappings":"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"}
|
package/dist/SqlDataQuery.js
CHANGED
|
@@ -10,6 +10,7 @@ import { TablePattern } from './TablePattern.js';
|
|
|
10
10
|
import { TableQuerySchema } from './TableQuerySchema.js';
|
|
11
11
|
import { getBucketId, isSelectStatement } from './utils.js';
|
|
12
12
|
export class SqlDataQuery extends BaseSqlDataQuery {
|
|
13
|
+
filter;
|
|
13
14
|
static fromSql(descriptor_name, bucket_parameters, sql, options) {
|
|
14
15
|
const parsed = parse(sql, { locationTracking: true });
|
|
15
16
|
const rows = new SqlDataQuery();
|
|
@@ -96,13 +97,12 @@ export class SqlDataQuery extends BaseSqlDataQuery {
|
|
|
96
97
|
if (key.startsWith('_')) {
|
|
97
98
|
continue;
|
|
98
99
|
}
|
|
99
|
-
output[key]
|
|
100
|
+
output[key] ??= row[key];
|
|
100
101
|
}
|
|
101
102
|
},
|
|
102
103
|
getTypes(schema, into) {
|
|
103
|
-
var _a;
|
|
104
104
|
for (let column of schema.getColumns(alias)) {
|
|
105
|
-
into[
|
|
105
|
+
into[column.name] ??= column;
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
});
|
package/dist/SqlDataQuery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlDataQuery.js","sourceRoot":"","sources":["../src/SqlDataQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE3E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,OAAO,YAAa,SAAQ,gBAAgB;
|
|
1
|
+
{"version":3,"file":"SqlDataQuery.js","sourceRoot":"","sources":["../src/SqlDataQuery.ts"],"names":[],"mappings":"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"}
|