@powersync/service-sync-rules 0.0.0-dev-20240709124106 → 0.0.0-dev-20240918092408
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/ExpressionType.d.ts +1 -0
- package/dist/ExpressionType.js +3 -0
- package/dist/ExpressionType.js.map +1 -1
- package/dist/{JsSchemaGenerator.d.ts → JsLegacySchemaGenerator.d.ts} +4 -4
- package/dist/{JsSchemaGenerator.js → JsLegacySchemaGenerator.js} +5 -5
- package/dist/JsLegacySchemaGenerator.js.map +1 -0
- package/dist/SqlBucketDescriptor.d.ts +4 -3
- package/dist/SqlBucketDescriptor.js +4 -4
- package/dist/SqlBucketDescriptor.js.map +1 -1
- package/dist/SqlDataQuery.d.ts +2 -1
- package/dist/SqlDataQuery.js +24 -4
- package/dist/SqlDataQuery.js.map +1 -1
- package/dist/SqlParameterQuery.d.ts +2 -2
- package/dist/SqlParameterQuery.js +4 -3
- package/dist/SqlParameterQuery.js.map +1 -1
- package/dist/SqlSyncRules.d.ts +12 -7
- package/dist/SqlSyncRules.js +8 -7
- package/dist/SqlSyncRules.js.map +1 -1
- package/dist/TablePattern.d.ts +1 -2
- package/dist/TablePattern.js +0 -2
- package/dist/TablePattern.js.map +1 -1
- package/dist/TsSchemaGenerator.d.ts +34 -0
- package/dist/TsSchemaGenerator.js +93 -0
- package/dist/TsSchemaGenerator.js.map +1 -0
- package/dist/generators.d.ts +5 -2
- package/dist/generators.js +5 -2
- package/dist/generators.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +2 -1
- package/dist/types.js.map +1 -1
- package/package.json +3 -3
- package/dist/JsSchemaGenerator.js.map +0 -1
package/dist/ExpressionType.d.ts
CHANGED
package/dist/ExpressionType.js
CHANGED
|
@@ -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;AAS3B,MAAM,OAAO,cAAc;IAkBzB,MAAM,CAAC,EAAE,CAAC,SAAiB;QACzB,eAAe;QACf,OAAO,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,IAA4B;QAC9C,IAAI,IAAI,IAAI,MAAM,EAAE;YAClB,OAAO,cAAc,CAAC,IAAI,CAAC;SAC5B;aAAM,IAAI,IAAI,IAAI,MAAM,EAAE;YACzB,OAAO,cAAc,CAAC,IAAI,CAAC;SAC5B;aAAM,IAAI,IAAI,IAAI,MAAM,EAAE;YACzB,OAAO,cAAc,CAAC,IAAI,CAAC;SAC5B;aAAM,IAAI,IAAI,IAAI,SAAS,EAAE;YAC5B,OAAO,cAAc,CAAC,OAAO,CAAC;SAC/B;aAAM,IAAI,IAAI,IAAI,MAAM,EAAE;YACzB,OAAO,cAAc,CAAC,IAAI,CAAC;SAC5B;aAAM,IAAI,IAAI,IAAI,SAAS,EAAE;YAC5B,OAAO,cAAc,CAAC,OAAO,CAAC;SAC/B;aAAM;YACL,OAAO,cAAc,CAAC,IAAI,CAAC;SAC5B;IACH,CAAC;IAED,YAAoB,SAAiB;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,EAAE,CAAC,KAAqB;QACtB,OAAO,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED,GAAG,CAAC,KAAqB;QACvB,OAAO,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC;IACxG,CAAC;;
|
|
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;AAS3B,MAAM,OAAO,cAAc;IAkBzB,MAAM,CAAC,EAAE,CAAC,SAAiB;QACzB,eAAe;QACf,OAAO,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,IAA4B;QAC9C,IAAI,IAAI,IAAI,MAAM,EAAE;YAClB,OAAO,cAAc,CAAC,IAAI,CAAC;SAC5B;aAAM,IAAI,IAAI,IAAI,MAAM,EAAE;YACzB,OAAO,cAAc,CAAC,IAAI,CAAC;SAC5B;aAAM,IAAI,IAAI,IAAI,MAAM,EAAE;YACzB,OAAO,cAAc,CAAC,IAAI,CAAC;SAC5B;aAAM,IAAI,IAAI,IAAI,SAAS,EAAE;YAC5B,OAAO,cAAc,CAAC,OAAO,CAAC;SAC/B;aAAM,IAAI,IAAI,IAAI,MAAM,EAAE;YACzB,OAAO,cAAc,CAAC,IAAI,CAAC;SAC5B;aAAM,IAAI,IAAI,IAAI,SAAS,EAAE;YAC5B,OAAO,cAAc,CAAC,OAAO,CAAC;SAC/B;aAAM;YACL,OAAO,cAAc,CAAC,IAAI,CAAC;SAC5B;IACH,CAAC;IAED,YAAoB,SAAiB;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,EAAE,CAAC,KAAqB;QACtB,OAAO,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED,GAAG,CAAC,KAAqB;QACvB,OAAO,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC;IACxG,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC;IACrC,CAAC;;AAxDD;;GAEG;AACI,mBAAI,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC;AACpC;;GAEG;AACI,kBAAG,GAAG,IAAI,cAAc,CAAC,SAAS,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC,CAAC;AAC3E,mBAAI,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;AACrC,sBAAO,GAAG,IAAI,cAAc,CAAC,YAAY,CAAC,CAAC;AAC3C,mBAAI,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;AACrC,mBAAI,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;AACrC,uBAAQ,GAAG,IAAI,cAAc,CAAC,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC,CAAC;AACpE,sBAAO,GAAG,IAAI,cAAc,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { SchemaGenerator } from './SchemaGenerator.js';
|
|
2
2
|
import { SqlSyncRules } from './SqlSyncRules.js';
|
|
3
3
|
import { SourceSchema } from './types.js';
|
|
4
|
-
export declare class
|
|
5
|
-
readonly key = "
|
|
6
|
-
readonly label = "JavaScript";
|
|
7
|
-
readonly mediaType = "
|
|
4
|
+
export declare class JsLegacySchemaGenerator extends SchemaGenerator {
|
|
5
|
+
readonly key = "jsLegacy";
|
|
6
|
+
readonly label = "JavaScript (legacy syntax)";
|
|
7
|
+
readonly mediaType = "text/javascript";
|
|
8
8
|
readonly fileName = "schema.js";
|
|
9
9
|
generate(source: SqlSyncRules, schema: SourceSchema): string;
|
|
10
10
|
private generateTable;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { TYPE_INTEGER, TYPE_REAL, TYPE_TEXT } from './ExpressionType.js';
|
|
2
2
|
import { SchemaGenerator } from './SchemaGenerator.js';
|
|
3
|
-
export class
|
|
3
|
+
export class JsLegacySchemaGenerator extends SchemaGenerator {
|
|
4
4
|
constructor() {
|
|
5
5
|
super(...arguments);
|
|
6
|
-
this.key = '
|
|
7
|
-
this.label = 'JavaScript';
|
|
8
|
-
this.mediaType = '
|
|
6
|
+
this.key = 'jsLegacy';
|
|
7
|
+
this.label = 'JavaScript (legacy syntax)';
|
|
8
|
+
this.mediaType = 'text/javascript';
|
|
9
9
|
this.fileName = 'schema.js';
|
|
10
10
|
}
|
|
11
11
|
generate(source, schema) {
|
|
@@ -39,4 +39,4 @@ export class JsSchemaGenerator extends SchemaGenerator {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
//# sourceMappingURL=
|
|
42
|
+
//# sourceMappingURL=JsLegacySchemaGenerator.js.map
|
|
@@ -0,0 +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;IAA5D;;QACW,QAAG,GAAG,UAAU,CAAC;QACjB,UAAK,GAAG,4BAA4B,CAAC;QACrC,cAAS,GAAG,iBAAiB,CAAC;QAC9B,aAAQ,GAAG,WAAW,CAAC;IAgClC,CAAC;IA9BC,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;YAC3B,OAAO,uBAAuB,MAAM,CAAC,IAAI,6BAA6B,CAAC;SACxE;aAAM,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,EAAE;YAClC,OAAO,uBAAuB,MAAM,CAAC,IAAI,6BAA6B,CAAC;SACxE;aAAM,IAAI,CAAC,CAAC,SAAS,GAAG,YAAY,EAAE;YACrC,OAAO,uBAAuB,MAAM,CAAC,IAAI,gCAAgC,CAAC;SAC3E;aAAM;YACL,OAAO,uBAAuB,MAAM,CAAC,IAAI,6BAA6B,CAAC;SACxE;IACH,CAAC;CACF"}
|
|
@@ -2,10 +2,11 @@ import { IdSequence } from './IdSequence.js';
|
|
|
2
2
|
import { SourceTableInterface } from './SourceTableInterface.js';
|
|
3
3
|
import { SqlDataQuery } from './SqlDataQuery.js';
|
|
4
4
|
import { SqlParameterQuery } from './SqlParameterQuery.js';
|
|
5
|
+
import { SyncRulesOptions } from './SqlSyncRules.js';
|
|
5
6
|
import { StaticSqlParameterQuery } from './StaticSqlParameterQuery.js';
|
|
6
7
|
import { TablePattern } from './TablePattern.js';
|
|
7
8
|
import { SqlRuleError } from './errors.js';
|
|
8
|
-
import { EvaluateRowOptions, EvaluatedParametersResult, EvaluationResult, QueryBucketIdOptions, QueryParseOptions, RequestParameters,
|
|
9
|
+
import { EvaluateRowOptions, EvaluatedParametersResult, EvaluationResult, QueryBucketIdOptions, QueryParseOptions, RequestParameters, SqliteRow } from './types.js';
|
|
9
10
|
export interface QueryParseResult {
|
|
10
11
|
/**
|
|
11
12
|
* True if parsed in some form, even if there are errors.
|
|
@@ -25,8 +26,8 @@ export declare class SqlBucketDescriptor {
|
|
|
25
26
|
parameter_queries: SqlParameterQuery[];
|
|
26
27
|
global_parameter_queries: StaticSqlParameterQuery[];
|
|
27
28
|
parameterIdSequence: IdSequence;
|
|
28
|
-
addDataQuery(sql: string,
|
|
29
|
-
addParameterQuery(sql: string,
|
|
29
|
+
addDataQuery(sql: string, options: SyncRulesOptions): QueryParseResult;
|
|
30
|
+
addParameterQuery(sql: string, options: QueryParseOptions): QueryParseResult;
|
|
30
31
|
evaluateRow(options: EvaluateRowOptions): EvaluationResult[];
|
|
31
32
|
evaluateParameterRow(sourceTable: SourceTableInterface, row: SqliteRow): EvaluatedParametersResult[];
|
|
32
33
|
getStaticBucketIds(parameters: RequestParameters): string[];
|
|
@@ -13,11 +13,11 @@ export class SqlBucketDescriptor {
|
|
|
13
13
|
this.parameterIdSequence = new IdSequence();
|
|
14
14
|
this.name = name;
|
|
15
15
|
}
|
|
16
|
-
addDataQuery(sql,
|
|
16
|
+
addDataQuery(sql, options) {
|
|
17
17
|
if (this.bucket_parameters == null) {
|
|
18
18
|
throw new Error('Bucket parameters must be defined');
|
|
19
19
|
}
|
|
20
|
-
const dataRows = SqlDataQuery.fromSql(this.name, this.bucket_parameters, sql,
|
|
20
|
+
const dataRows = SqlDataQuery.fromSql(this.name, this.bucket_parameters, sql, options);
|
|
21
21
|
dataRows.ruleId = this.idSequence.nextId();
|
|
22
22
|
this.data_queries.push(dataRows);
|
|
23
23
|
return {
|
|
@@ -25,8 +25,8 @@ export class SqlBucketDescriptor {
|
|
|
25
25
|
errors: dataRows.errors
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
|
-
addParameterQuery(sql,
|
|
29
|
-
const parameterQuery = SqlParameterQuery.fromSql(this.name, sql,
|
|
28
|
+
addParameterQuery(sql, options) {
|
|
29
|
+
const parameterQuery = SqlParameterQuery.fromSql(this.name, sql, options);
|
|
30
30
|
if (this.bucket_parameters == null) {
|
|
31
31
|
this.bucket_parameters = parameterQuery.bucket_parameters;
|
|
32
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlBucketDescriptor.js","sourceRoot":"","sources":["../src/SqlBucketDescriptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"SqlBucketDescriptor.js","sourceRoot":"","sources":["../src/SqlBucketDescriptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAyB3D,MAAM,OAAO,mBAAmB;IAI9B,YAAY,IAAY,EAAS,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;QAIvD;;WAEG;QACH,iBAAY,GAAmB,EAAE,CAAC;QAClC,sBAAiB,GAAwB,EAAE,CAAC;QAC5C,6BAAwB,GAA8B,EAAE,CAAC;QAEzD,wBAAmB,GAAG,IAAI,UAAU,EAAE,CAAC;QAVrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAWD,YAAY,CAAC,GAAW,EAAE,OAAyB;QACjD,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;SACtD;QACD,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAEvF,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QAE3C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjC,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,GAAW,EAAE,OAA0B;QACvD,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC1E,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,EAAE;YAClC,IAAI,CAAC,iBAAiB,GAAG,cAAc,CAAC,iBAAiB,CAAC;SAC3D;aAAM;YACL,IACE,IAAI,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,iBAAkB,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAChH;gBACA,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;aAC1F;SACF;QACD,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC;QACtD,IAAI,cAAc,YAAY,iBAAiB,EAAE;YAC/C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAC7C;aAAM;YACL,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SACpD;QAED,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,cAAc,CAAC,MAAM;SAC9B,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,OAA2B;QACrC,IAAI,OAAO,GAAuB,EAAE,CAAC;QACrC,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;YACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBACvC,SAAS;aACV;YAED,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;SACzE;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,oBAAoB,CAAC,WAAiC,EAAE,GAAc;QACpE,IAAI,OAAO,GAAgC,EAAE,CAAC;QAC9C,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxC,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;aAClD;SACF;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,kBAAkB,CAAC,UAA6B;QAC9C,IAAI,OAAO,GAAa,EAAE,CAAC;QAC3B,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,wBAAwB,EAAE;YAC/C,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;SACvD;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAA6B;QAChD,IAAI,MAAM,GAAa,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACnE,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SACvD;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,eAAe;QACb,IAAI,MAAM,GAAG,IAAI,GAAG,EAAgB,CAAC;QACrC,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,WAAY,CAAC,CAAC;SAChC;QACD,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;YACnC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,WAAY,CAAC,CAAC;SAChC;QAED,wDAAwD;QAExD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,cAAc,CAAC,KAA2B;QACxC,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;YACnC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxB,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oBAAoB,CAAC,KAA2B;QAC9C,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxB,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
package/dist/SqlDataQuery.d.ts
CHANGED
|
@@ -5,12 +5,13 @@ import { SourceTableInterface } from './SourceTableInterface.js';
|
|
|
5
5
|
import { SqlTools } from './sql_filters.js';
|
|
6
6
|
import { TablePattern } from './TablePattern.js';
|
|
7
7
|
import { EvaluationResult, ParameterMatchClause, QueryParameters, QuerySchema, SourceSchema, SqliteRow } from './types.js';
|
|
8
|
+
import { SyncRulesOptions } from './SqlSyncRules.js';
|
|
8
9
|
interface RowValueExtractor {
|
|
9
10
|
extract(tables: QueryParameters, into: SqliteRow): void;
|
|
10
11
|
getTypes(schema: QuerySchema, into: Record<string, ColumnDefinition>): void;
|
|
11
12
|
}
|
|
12
13
|
export declare class SqlDataQuery {
|
|
13
|
-
static fromSql(descriptor_name: string, bucket_parameters: string[], sql: string,
|
|
14
|
+
static fromSql(descriptor_name: string, bucket_parameters: string[], sql: string, options: SyncRulesOptions): SqlDataQuery;
|
|
14
15
|
sourceTable?: TablePattern;
|
|
15
16
|
table?: string;
|
|
16
17
|
sql?: string;
|
package/dist/SqlDataQuery.js
CHANGED
|
@@ -9,9 +9,10 @@ import { TablePattern } from './TablePattern.js';
|
|
|
9
9
|
import { filterJsonRow, getBucketId, isSelectStatement } from './utils.js';
|
|
10
10
|
import { TableQuerySchema } from './TableQuerySchema.js';
|
|
11
11
|
export class SqlDataQuery {
|
|
12
|
-
static fromSql(descriptor_name, bucket_parameters, sql,
|
|
12
|
+
static fromSql(descriptor_name, bucket_parameters, sql, options) {
|
|
13
13
|
const parsed = parse(sql, { locationTracking: true });
|
|
14
14
|
const rows = new SqlDataQuery();
|
|
15
|
+
const schema = options.schema;
|
|
15
16
|
if (parsed.length > 1) {
|
|
16
17
|
throw new SqlRuleError('Only a single SELECT statement is supported', sql, parsed[1]?._location);
|
|
17
18
|
}
|
|
@@ -28,7 +29,7 @@ export class SqlDataQuery {
|
|
|
28
29
|
throw new SqlRuleError('Must SELECT from a single table', sql, q.from?.[0]._location);
|
|
29
30
|
}
|
|
30
31
|
const alias = tableRef.alias ?? tableRef.name;
|
|
31
|
-
const sourceTable = new TablePattern(tableRef.schema, tableRef.name);
|
|
32
|
+
const sourceTable = new TablePattern(tableRef.schema ?? options.defaultSchema, tableRef.name);
|
|
32
33
|
let querySchema = undefined;
|
|
33
34
|
if (schema) {
|
|
34
35
|
const tables = schema.getTables(sourceTable);
|
|
@@ -66,6 +67,7 @@ export class SqlDataQuery {
|
|
|
66
67
|
rows.columns = q.columns ?? [];
|
|
67
68
|
rows.tools = tools;
|
|
68
69
|
let hasId = false;
|
|
70
|
+
let hasWildcard = false;
|
|
69
71
|
for (let column of q.columns ?? []) {
|
|
70
72
|
const name = tools.getOutputName(column);
|
|
71
73
|
if (name != '*') {
|
|
@@ -102,12 +104,30 @@ export class SqlDataQuery {
|
|
|
102
104
|
}
|
|
103
105
|
});
|
|
104
106
|
}
|
|
105
|
-
if (name == 'id'
|
|
107
|
+
if (name == 'id') {
|
|
106
108
|
hasId = true;
|
|
107
109
|
}
|
|
110
|
+
else if (name == '*') {
|
|
111
|
+
hasWildcard = true;
|
|
112
|
+
if (querySchema == null) {
|
|
113
|
+
// Not performing schema-based validation - assume there is an id
|
|
114
|
+
hasId = true;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
const idType = querySchema.getType(alias, 'id');
|
|
118
|
+
if (!idType.isNone()) {
|
|
119
|
+
hasId = true;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
108
123
|
}
|
|
109
124
|
if (!hasId) {
|
|
110
|
-
|
|
125
|
+
const error = new SqlRuleError(`Query must return an "id" column`, sql, q.columns?.[0]._location);
|
|
126
|
+
if (hasWildcard) {
|
|
127
|
+
// Schema-based validations are always warnings
|
|
128
|
+
error.type = 'warning';
|
|
129
|
+
}
|
|
130
|
+
rows.errors.push(error);
|
|
111
131
|
}
|
|
112
132
|
rows.errors.push(...tools.errors);
|
|
113
133
|
return rows;
|
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,EAAkB,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAoB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEvE,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;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAWjD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"SqlDataQuery.js","sourceRoot":"","sources":["../src/SqlDataQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { SourceTableInterface } from './SourceTableInterface.js';
|
|
|
4
4
|
import { SqlTools } from './sql_filters.js';
|
|
5
5
|
import { StaticSqlParameterQuery } from './StaticSqlParameterQuery.js';
|
|
6
6
|
import { TablePattern } from './TablePattern.js';
|
|
7
|
-
import { EvaluatedParametersResult, InputParameter, ParameterMatchClause, ParameterValueClause, QueryBucketIdOptions, QueryParseOptions, RequestParameters, RowValueClause,
|
|
7
|
+
import { EvaluatedParametersResult, InputParameter, ParameterMatchClause, ParameterValueClause, QueryBucketIdOptions, QueryParseOptions, RequestParameters, RowValueClause, SqliteJsonRow, SqliteJsonValue, SqliteRow } from './types.js';
|
|
8
8
|
/**
|
|
9
9
|
* Represents a parameter query, such as:
|
|
10
10
|
*
|
|
@@ -12,7 +12,7 @@ import { EvaluatedParametersResult, InputParameter, ParameterMatchClause, Parame
|
|
|
12
12
|
* SELECT id as user_id, token_parameters.is_admin as is_admin FROM users WHERE users.user_id = token_parameters.user_id
|
|
13
13
|
*/
|
|
14
14
|
export declare class SqlParameterQuery {
|
|
15
|
-
static fromSql(descriptor_name: string, sql: string,
|
|
15
|
+
static fromSql(descriptor_name: string, sql: string, options: QueryParseOptions): SqlParameterQuery | StaticSqlParameterQuery;
|
|
16
16
|
sourceTable?: TablePattern;
|
|
17
17
|
table?: string;
|
|
18
18
|
sql?: string;
|
|
@@ -13,9 +13,10 @@ import { filterJsonRow, getBucketId, isJsonValue, isSelectStatement } from './ut
|
|
|
13
13
|
* SELECT id as user_id, token_parameters.is_admin as is_admin FROM users WHERE users.user_id = token_parameters.user_id
|
|
14
14
|
*/
|
|
15
15
|
export class SqlParameterQuery {
|
|
16
|
-
static fromSql(descriptor_name, sql,
|
|
16
|
+
static fromSql(descriptor_name, sql, options) {
|
|
17
17
|
const parsed = parse(sql, { locationTracking: true });
|
|
18
18
|
const rows = new SqlParameterQuery();
|
|
19
|
+
const schema = options?.schema;
|
|
19
20
|
if (parsed.length > 1) {
|
|
20
21
|
throw new SqlRuleError('Only a single SELECT statement is supported', sql, parsed[1]?._location);
|
|
21
22
|
}
|
|
@@ -39,7 +40,7 @@ export class SqlParameterQuery {
|
|
|
39
40
|
if (tableRef.name != alias) {
|
|
40
41
|
rows.errors.push(new SqlRuleError('Table aliases not supported in parameter queries', sql, q.from?.[0]._location));
|
|
41
42
|
}
|
|
42
|
-
const sourceTable = new TablePattern(tableRef.schema, tableRef.name);
|
|
43
|
+
const sourceTable = new TablePattern(tableRef.schema ?? options.defaultSchema, tableRef.name);
|
|
43
44
|
let querySchema = undefined;
|
|
44
45
|
if (schema) {
|
|
45
46
|
const tables = schema.getTables(sourceTable);
|
|
@@ -101,7 +102,7 @@ export class SqlParameterQuery {
|
|
|
101
102
|
}
|
|
102
103
|
rows.tools = tools;
|
|
103
104
|
rows.errors.push(...tools.errors);
|
|
104
|
-
if (rows.usesDangerousRequestParameters && !options
|
|
105
|
+
if (rows.usesDangerousRequestParameters && !options.accept_potentially_dangerous_queries) {
|
|
105
106
|
let err = new SqlRuleError("Potentially dangerous query based on parameters set by the client. The client can send any value for these parameters so it's not a good place to do authorization.", sql);
|
|
106
107
|
err.type = 'warning';
|
|
107
108
|
rows.errors.push(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlParameterQuery.js","sourceRoot":"","sources":["../src/SqlParameterQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAkB,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAiBzD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"SqlParameterQuery.js","sourceRoot":"","sources":["../src/SqlParameterQuery.ts"],"names":[],"mappings":"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"}
|
package/dist/SqlSyncRules.d.ts
CHANGED
|
@@ -5,18 +5,23 @@ import { SourceTableInterface } from './SourceTableInterface.js';
|
|
|
5
5
|
import { QueryParseResult, SqlBucketDescriptor } from './SqlBucketDescriptor.js';
|
|
6
6
|
import { TablePattern } from './TablePattern.js';
|
|
7
7
|
import { EvaluatedParameters, EvaluatedRow, EvaluateRowOptions, EvaluationError, QueryBucketIdOptions, RequestParameters, SourceSchema, SqliteRow, SyncRules } from './types.js';
|
|
8
|
+
export interface SyncRulesOptions {
|
|
9
|
+
schema?: SourceSchema;
|
|
10
|
+
/**
|
|
11
|
+
* The default schema to use when only a table name is specified.
|
|
12
|
+
*
|
|
13
|
+
* 'public' for Postgres, default database for MongoDB/MySQL.
|
|
14
|
+
*/
|
|
15
|
+
defaultSchema: string;
|
|
16
|
+
throwOnError?: boolean;
|
|
17
|
+
}
|
|
8
18
|
export declare class SqlSyncRules implements SyncRules {
|
|
9
19
|
bucket_descriptors: SqlBucketDescriptor[];
|
|
10
20
|
idSequence: IdSequence;
|
|
11
21
|
content: string;
|
|
12
22
|
errors: YamlError[];
|
|
13
|
-
static validate(yaml: string, options
|
|
14
|
-
|
|
15
|
-
}): YamlError[];
|
|
16
|
-
static fromYaml(yaml: string, options?: {
|
|
17
|
-
throwOnError?: boolean;
|
|
18
|
-
schema?: SourceSchema;
|
|
19
|
-
}): SqlSyncRules;
|
|
23
|
+
static validate(yaml: string, options: SyncRulesOptions): YamlError[];
|
|
24
|
+
static fromYaml(yaml: string, options: SyncRulesOptions): SqlSyncRules;
|
|
20
25
|
throwOnError(): void;
|
|
21
26
|
static tokenError(token: any, message: string): YamlError;
|
|
22
27
|
withScalar(scalar: Scalar, cb: (value: string) => QueryParseResult): QueryParseResult;
|
package/dist/SqlSyncRules.js
CHANGED
|
@@ -24,8 +24,8 @@ export class SqlSyncRules {
|
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
static fromYaml(yaml, options) {
|
|
27
|
-
const throwOnError = options
|
|
28
|
-
const schema = options
|
|
27
|
+
const throwOnError = options.throwOnError ?? true;
|
|
28
|
+
const schema = options.schema;
|
|
29
29
|
const lineCounter = new LineCounter();
|
|
30
30
|
const parsed = parseDocument(yaml, {
|
|
31
31
|
schema: 'core',
|
|
@@ -62,7 +62,8 @@ export class SqlSyncRules {
|
|
|
62
62
|
const { key: keyScalar, value } = entry;
|
|
63
63
|
const key = keyScalar.toString();
|
|
64
64
|
const accept_potentially_dangerous_queries = value.get('accept_potentially_dangerous_queries', true)?.value == true;
|
|
65
|
-
const
|
|
65
|
+
const queryOptions = {
|
|
66
|
+
...options,
|
|
66
67
|
accept_potentially_dangerous_queries
|
|
67
68
|
};
|
|
68
69
|
const parameters = value.get('parameters', true);
|
|
@@ -70,18 +71,18 @@ export class SqlSyncRules {
|
|
|
70
71
|
const descriptor = new SqlBucketDescriptor(key, rules.idSequence);
|
|
71
72
|
if (parameters instanceof Scalar) {
|
|
72
73
|
rules.withScalar(parameters, (q) => {
|
|
73
|
-
return descriptor.addParameterQuery(q,
|
|
74
|
+
return descriptor.addParameterQuery(q, queryOptions);
|
|
74
75
|
});
|
|
75
76
|
}
|
|
76
77
|
else if (parameters instanceof YAMLSeq) {
|
|
77
78
|
for (let item of parameters.items) {
|
|
78
79
|
rules.withScalar(item, (q) => {
|
|
79
|
-
return descriptor.addParameterQuery(q,
|
|
80
|
+
return descriptor.addParameterQuery(q, queryOptions);
|
|
80
81
|
});
|
|
81
82
|
}
|
|
82
83
|
}
|
|
83
84
|
else {
|
|
84
|
-
descriptor.addParameterQuery('SELECT',
|
|
85
|
+
descriptor.addParameterQuery('SELECT', queryOptions);
|
|
85
86
|
}
|
|
86
87
|
if (!(dataQueries instanceof YAMLSeq)) {
|
|
87
88
|
rules.errors.push(this.tokenError(dataQueries ?? value, `'data' must be an array`));
|
|
@@ -89,7 +90,7 @@ export class SqlSyncRules {
|
|
|
89
90
|
}
|
|
90
91
|
for (let query of dataQueries.items) {
|
|
91
92
|
rules.withScalar(query, (q) => {
|
|
92
|
-
return descriptor.addDataQuery(q,
|
|
93
|
+
return descriptor.addDataQuery(q, queryOptions);
|
|
93
94
|
});
|
|
94
95
|
}
|
|
95
96
|
rules.bucket_descriptors.push(descriptor);
|
package/dist/SqlSyncRules.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlSyncRules.js","sourceRoot":"","sources":["../src/SqlSyncRules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAW,OAAO,EAAE,MAAM,MAAM,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAoB,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEjF,OAAO,EAOL,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EAOlB,MAAM,YAAY,CAAC;AAEpB,MAAM,oCAAoC,GAAG,MAAM,CAAC,sCAAsC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"SqlSyncRules.js","sourceRoot":"","sources":["../src/SqlSyncRules.ts"],"names":[],"mappings":"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"}
|
package/dist/TablePattern.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { SourceTableInterface } from './SourceTableInterface.js';
|
|
2
2
|
export declare const DEFAULT_TAG = "default";
|
|
3
|
-
export declare const DEFAULT_SCHEMA = "public";
|
|
4
3
|
/**
|
|
5
4
|
* Some pattern matching SourceTables.
|
|
6
5
|
*/
|
|
@@ -8,7 +7,7 @@ export declare class TablePattern {
|
|
|
8
7
|
readonly connectionTag: string;
|
|
9
8
|
readonly schema: string;
|
|
10
9
|
readonly tablePattern: string;
|
|
11
|
-
constructor(schema: string
|
|
10
|
+
constructor(schema: string, tablePattern: string);
|
|
12
11
|
get isWildcard(): boolean;
|
|
13
12
|
get tablePrefix(): string;
|
|
14
13
|
get name(): string;
|
package/dist/TablePattern.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
export const DEFAULT_TAG = 'default';
|
|
2
|
-
export const DEFAULT_SCHEMA = 'public';
|
|
3
2
|
/**
|
|
4
3
|
* Some pattern matching SourceTables.
|
|
5
4
|
*/
|
|
6
5
|
export class TablePattern {
|
|
7
6
|
constructor(schema, tablePattern) {
|
|
8
|
-
schema ?? (schema = DEFAULT_SCHEMA);
|
|
9
7
|
const splitSchema = schema.split('.');
|
|
10
8
|
if (splitSchema.length > 2) {
|
|
11
9
|
throw new Error(`Invalid schema: ${schema}`);
|
package/dist/TablePattern.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TablePattern.js","sourceRoot":"","sources":["../src/TablePattern.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"TablePattern.js","sourceRoot":"","sources":["../src/TablePattern.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC;AAErC;;GAEG;AACH,MAAM,OAAO,YAAY;IAMvB,YAAY,MAAc,EAAE,YAAoB;QAC9C,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;SAC9C;QACD,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;YAC3B,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;YACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;SACtB;QACD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,WAAW;QACb,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SACzC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,IAAI;QACN,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,KAA2B;QACjC,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE;YAC5E,OAAO,KAAK,CAAC;SACd;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,OAAO,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACjD;aAAM;YACL,OAAO,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC;SACzC;IACH,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO,EAAE,CAAC;SACX;QACD,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;CACF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { SchemaGenerator } from './SchemaGenerator.js';
|
|
2
|
+
import { SqlSyncRules } from './SqlSyncRules.js';
|
|
3
|
+
import { SourceSchema } from './types.js';
|
|
4
|
+
export interface TsSchemaGeneratorOptions {
|
|
5
|
+
language?: TsSchemaLanguage;
|
|
6
|
+
imports?: TsSchemaImports;
|
|
7
|
+
}
|
|
8
|
+
export declare enum TsSchemaLanguage {
|
|
9
|
+
ts = "ts",
|
|
10
|
+
/** Excludes types from the generated schema. */
|
|
11
|
+
js = "js"
|
|
12
|
+
}
|
|
13
|
+
export declare enum TsSchemaImports {
|
|
14
|
+
web = "web",
|
|
15
|
+
reactNative = "reactNative",
|
|
16
|
+
/**
|
|
17
|
+
* Emits imports for `@powersync/web`, with comments for `@powersync/react-native`.
|
|
18
|
+
*/
|
|
19
|
+
auto = "auto"
|
|
20
|
+
}
|
|
21
|
+
export declare class TsSchemaGenerator extends SchemaGenerator {
|
|
22
|
+
readonly options: TsSchemaGeneratorOptions;
|
|
23
|
+
readonly key: string;
|
|
24
|
+
readonly fileName: string;
|
|
25
|
+
readonly mediaType: string;
|
|
26
|
+
readonly label: string;
|
|
27
|
+
readonly language: TsSchemaLanguage;
|
|
28
|
+
constructor(options?: TsSchemaGeneratorOptions);
|
|
29
|
+
generate(source: SqlSyncRules, schema: SourceSchema): string;
|
|
30
|
+
private generateTypeExports;
|
|
31
|
+
private generateImports;
|
|
32
|
+
private generateTable;
|
|
33
|
+
private generateColumn;
|
|
34
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { TYPE_INTEGER, TYPE_REAL, TYPE_TEXT } from './ExpressionType.js';
|
|
2
|
+
import { SchemaGenerator } from './SchemaGenerator.js';
|
|
3
|
+
export var TsSchemaLanguage;
|
|
4
|
+
(function (TsSchemaLanguage) {
|
|
5
|
+
TsSchemaLanguage["ts"] = "ts";
|
|
6
|
+
/** Excludes types from the generated schema. */
|
|
7
|
+
TsSchemaLanguage["js"] = "js";
|
|
8
|
+
})(TsSchemaLanguage || (TsSchemaLanguage = {}));
|
|
9
|
+
export var TsSchemaImports;
|
|
10
|
+
(function (TsSchemaImports) {
|
|
11
|
+
TsSchemaImports["web"] = "web";
|
|
12
|
+
TsSchemaImports["reactNative"] = "reactNative";
|
|
13
|
+
/**
|
|
14
|
+
* Emits imports for `@powersync/web`, with comments for `@powersync/react-native`.
|
|
15
|
+
*/
|
|
16
|
+
TsSchemaImports["auto"] = "auto";
|
|
17
|
+
})(TsSchemaImports || (TsSchemaImports = {}));
|
|
18
|
+
export class TsSchemaGenerator extends SchemaGenerator {
|
|
19
|
+
constructor(options = {}) {
|
|
20
|
+
super();
|
|
21
|
+
this.options = options;
|
|
22
|
+
this.language = options.language ?? TsSchemaLanguage.ts;
|
|
23
|
+
this.key = this.language;
|
|
24
|
+
if (this.language == TsSchemaLanguage.ts) {
|
|
25
|
+
this.fileName = 'schema.ts';
|
|
26
|
+
this.mediaType = 'text/typescript';
|
|
27
|
+
this.label = 'TypeScript';
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
this.fileName = 'schema.js';
|
|
31
|
+
this.mediaType = 'text/javascript';
|
|
32
|
+
this.label = 'JavaScript';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
generate(source, schema) {
|
|
36
|
+
const tables = super.getAllTables(source, schema);
|
|
37
|
+
return `${this.generateImports()}
|
|
38
|
+
|
|
39
|
+
${tables.map((table) => this.generateTable(table.name, table.columns)).join('\n\n')}
|
|
40
|
+
|
|
41
|
+
export const AppSchema = new Schema({
|
|
42
|
+
${tables.map((table) => table.name).join(',\n ')}
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
${this.generateTypeExports()}`;
|
|
46
|
+
}
|
|
47
|
+
generateTypeExports() {
|
|
48
|
+
if (this.language == TsSchemaLanguage.ts) {
|
|
49
|
+
return `export type Database = (typeof AppSchema)['types'];\n`;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
return ``;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
generateImports() {
|
|
56
|
+
const importStyle = this.options.imports ?? 'auto';
|
|
57
|
+
if (importStyle == TsSchemaImports.web) {
|
|
58
|
+
return `import { column, Schema, Table } from '@powersync/web';`;
|
|
59
|
+
}
|
|
60
|
+
else if (importStyle == TsSchemaImports.reactNative) {
|
|
61
|
+
return `import { column, Schema, Table } from '@powersync/react-native';`;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
return `import { column, Schema, Table } from '@powersync/web';
|
|
65
|
+
// OR: import { column, Schema, Table } from '@powersync/react-native';`;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
generateTable(name, columns) {
|
|
69
|
+
return `const ${name} = new Table(
|
|
70
|
+
{
|
|
71
|
+
// id column (text) is automatically included
|
|
72
|
+
${columns.map((c) => this.generateColumn(c)).join(',\n ')}
|
|
73
|
+
},
|
|
74
|
+
{ indexes: {} }
|
|
75
|
+
);`;
|
|
76
|
+
}
|
|
77
|
+
generateColumn(column) {
|
|
78
|
+
const t = column.type;
|
|
79
|
+
if (t.typeFlags & TYPE_TEXT) {
|
|
80
|
+
return `${column.name}: column.text`;
|
|
81
|
+
}
|
|
82
|
+
else if (t.typeFlags & TYPE_REAL) {
|
|
83
|
+
return `${column.name}: column.real`;
|
|
84
|
+
}
|
|
85
|
+
else if (t.typeFlags & TYPE_INTEGER) {
|
|
86
|
+
return `${column.name}: column.integer`;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
return `${column.name}: column.text`;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=TsSchemaGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TsSchemaGenerator.js","sourceRoot":"","sources":["../src/TsSchemaGenerator.ts"],"names":[],"mappings":"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"}
|
package/dist/generators.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { DartSchemaGenerator } from './DartSchemaGenerator.js';
|
|
2
|
-
import {
|
|
2
|
+
import { JsLegacySchemaGenerator } from './JsLegacySchemaGenerator.js';
|
|
3
|
+
import { TsSchemaGenerator } from './TsSchemaGenerator.js';
|
|
3
4
|
export declare const schemaGenerators: {
|
|
4
|
-
|
|
5
|
+
ts: TsSchemaGenerator;
|
|
6
|
+
js: TsSchemaGenerator;
|
|
7
|
+
jsLegacy: JsLegacySchemaGenerator;
|
|
5
8
|
dart: DartSchemaGenerator;
|
|
6
9
|
};
|
package/dist/generators.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { DartSchemaGenerator } from './DartSchemaGenerator.js';
|
|
2
|
-
import {
|
|
2
|
+
import { JsLegacySchemaGenerator } from './JsLegacySchemaGenerator.js';
|
|
3
|
+
import { TsSchemaGenerator, TsSchemaLanguage } from './TsSchemaGenerator.js';
|
|
3
4
|
export const schemaGenerators = {
|
|
4
|
-
|
|
5
|
+
ts: new TsSchemaGenerator(),
|
|
6
|
+
js: new TsSchemaGenerator({ language: TsSchemaLanguage.js }),
|
|
7
|
+
jsLegacy: new JsLegacySchemaGenerator(),
|
|
5
8
|
dart: new DartSchemaGenerator()
|
|
6
9
|
};
|
|
7
10
|
//# sourceMappingURL=generators.js.map
|
package/dist/generators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generators.js","sourceRoot":"","sources":["../src/generators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"generators.js","sourceRoot":"","sources":["../src/generators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE7E,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,EAAE,EAAE,IAAI,iBAAiB,EAAE;IAC3B,EAAE,EAAE,IAAI,iBAAiB,CAAC,EAAE,QAAQ,EAAE,gBAAgB,CAAC,EAAE,EAAE,CAAC;IAC5D,QAAQ,EAAE,IAAI,uBAAuB,EAAE;IACvC,IAAI,EAAE,IAAI,mBAAmB,EAAE;CAChC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -13,7 +13,8 @@ export * from './StaticSchema.js';
|
|
|
13
13
|
export * from './ExpressionType.js';
|
|
14
14
|
export * from './SchemaGenerator.js';
|
|
15
15
|
export * from './DartSchemaGenerator.js';
|
|
16
|
-
export * from './
|
|
16
|
+
export * from './JsLegacySchemaGenerator.js';
|
|
17
|
+
export * from './TsSchemaGenerator.js';
|
|
17
18
|
export * from './generators.js';
|
|
18
19
|
export * from './SqlDataQuery.js';
|
|
19
20
|
export * from './request_functions.js';
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,8 @@ export * from './StaticSchema.js';
|
|
|
13
13
|
export * from './ExpressionType.js';
|
|
14
14
|
export * from './SchemaGenerator.js';
|
|
15
15
|
export * from './DartSchemaGenerator.js';
|
|
16
|
-
export * from './
|
|
16
|
+
export * from './JsLegacySchemaGenerator.js';
|
|
17
|
+
export * from './TsSchemaGenerator.js';
|
|
17
18
|
export * from './generators.js';
|
|
18
19
|
export * from './SqlDataQuery.js';
|
|
19
20
|
export * from './request_functions.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -2,11 +2,12 @@ import { JsonContainer } from '@powersync/service-jsonbig';
|
|
|
2
2
|
import { SourceTableInterface } from './SourceTableInterface.js';
|
|
3
3
|
import { ColumnDefinition, ExpressionType } from './ExpressionType.js';
|
|
4
4
|
import { TablePattern } from './TablePattern.js';
|
|
5
|
+
import { SyncRulesOptions } from './SqlSyncRules.js';
|
|
5
6
|
export interface SyncRules {
|
|
6
7
|
evaluateRow(options: EvaluateRowOptions): EvaluationResult[];
|
|
7
8
|
evaluateParameterRow(table: SourceTableInterface, row: SqliteRow): EvaluatedParametersResult[];
|
|
8
9
|
}
|
|
9
|
-
export interface QueryParseOptions {
|
|
10
|
+
export interface QueryParseOptions extends SyncRulesOptions {
|
|
10
11
|
accept_potentially_dangerous_queries?: boolean;
|
|
11
12
|
}
|
|
12
13
|
export interface EvaluatedParameters {
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAC;AAIpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAC;AAIpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAgDnD,MAAM,UAAU,iBAAiB,CAAC,CAAM;IACtC,OAAO,OAAO,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAmB;IAChD,OAAO,OAAQ,CAAkB,CAAC,MAAM,IAAI,QAAQ,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,CAA4B;IAChE,OAAO,KAAK,CAAC,OAAO,CAAE,CAAS,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAaD,MAAM,OAAO,iBAAiB;IAgB5B,YAAY,YAA+B,EAAE,gBAAqC;QAChF,iDAAiD;QACjD,MAAM,gBAAgB,GAAG,YAAY,CAAC,UAA6C,CAAC;QAEpF,MAAM,gBAAgB,GAAG;YACvB,GAAG,gBAAgB;YACnB,oDAAoD;YACpD,OAAO,EAAE,YAAY,CAAC,GAAG;SAC1B,CAAC;QAEF,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC;QAChC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAEzD,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC/D,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IACjE,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powersync/service-sync-rules",
|
|
3
3
|
"repository": "https://github.com/powersync-ja/powersync-service",
|
|
4
|
-
"version": "0.0.0-dev-
|
|
4
|
+
"version": "0.0.0-dev-20240918092408",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"license": "FSL-1.1-Apache-2.0",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"@powersync/service-jsonbig": "^0.17.10"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@types/node": "18.
|
|
24
|
-
"vitest": "^0.
|
|
23
|
+
"@types/node": "18.19.50",
|
|
24
|
+
"vitest": "^2.0.5"
|
|
25
25
|
},
|
|
26
26
|
"scripts": {
|
|
27
27
|
"clean": "rm -r ./dist && tsc -b --clean",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"JsSchemaGenerator.js","sourceRoot":"","sources":["../src/JsSchemaGenerator.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,iBAAkB,SAAQ,eAAe;IAAtD;;QACW,QAAG,GAAG,IAAI,CAAC;QACX,UAAK,GAAG,YAAY,CAAC;QACrB,cAAS,GAAG,wBAAwB,CAAC;QACrC,aAAQ,GAAG,WAAW,CAAC;IAgClC,CAAC;IA9BC,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;YAC3B,OAAO,uBAAuB,MAAM,CAAC,IAAI,6BAA6B,CAAC;SACxE;aAAM,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,EAAE;YAClC,OAAO,uBAAuB,MAAM,CAAC,IAAI,6BAA6B,CAAC;SACxE;aAAM,IAAI,CAAC,CAAC,SAAS,GAAG,YAAY,EAAE;YACrC,OAAO,uBAAuB,MAAM,CAAC,IAAI,gCAAgC,CAAC;SAC3E;aAAM;YACL,OAAO,uBAAuB,MAAM,CAAC,IAAI,6BAA6B,CAAC;SACxE;IACH,CAAC;CACF"}
|