@routier/core 0.2.0 → 0.3.0
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/LICENSE +21 -0
- package/{readme.md → README.md} +2 -2
- package/dist/assertions/index.cjs +191 -0
- package/dist/assertions/index.cjs.map +1 -0
- package/dist/assertions/index.d.ts +30 -0
- package/dist/assertions/index.js +94 -30
- package/dist/assertions/index.js.map +1 -1
- package/dist/capabilities/index.cjs +820 -0
- package/dist/capabilities/index.cjs.map +1 -0
- package/dist/capabilities/index.js +580 -545
- package/dist/capabilities/index.js.map +1 -1
- package/dist/codegen/handlers/CloneHandlerBuilder.d.ts +10 -1
- package/dist/codegen/handlers/SetHandlerBuilder.d.ts +4 -0
- package/dist/codegen/handlers/clone/CloneArrayHandler.d.ts +3 -0
- package/dist/codegen/handlers/clone/CloneDateHandler.d.ts +13 -0
- package/dist/codegen/handlers/clone/CloneValueHandler.d.ts +16 -0
- package/dist/codegen/handlers/compare/CompareComputedHandler.d.ts +10 -0
- package/dist/codegen/handlers/compare/CompareFunctionHandler.d.ts +10 -0
- package/dist/codegen/handlers/deserialize/DeserializeArrayHandler.d.ts +14 -0
- package/dist/codegen/handlers/enableChangeTracking/EnableChangeTrackingArrayHandler.d.ts +11 -0
- package/dist/codegen/handlers/enrichment/EnrichmentArrayHandler.d.ts +11 -0
- package/dist/codegen/handlers/freeze/FreezeArrayHandler.d.ts +6 -0
- package/dist/codegen/handlers/hash/HashArrayHandler.d.ts +10 -0
- package/dist/codegen/handlers/hash/HashFileHandler.d.ts +24 -0
- package/dist/codegen/handlers/hash/HashObjectHandler.d.ts +10 -0
- package/dist/codegen/handlers/hash/HashTransformHandler.d.ts +23 -0
- package/dist/codegen/handlers/index.d.ts +1 -0
- package/dist/codegen/handlers/merge/MergeArrayHandler.d.ts +20 -0
- package/dist/codegen/handlers/merge/MergeObjectHandler.d.ts +10 -0
- package/dist/codegen/handlers/serialize/SerializeArrayHandler.d.ts +19 -0
- package/dist/codegen/handlers/serialize/SerializeComputedHandler.d.ts +6 -0
- package/dist/codegen/handlers/set/SetComplexHandler.d.ts +6 -0
- package/dist/codegen/handlers/strip/StripComputedHandler.d.ts +10 -0
- package/dist/codegen/handlers/strip/StripFunctionHandler.d.ts +9 -0
- package/dist/codegen/handlers/types.d.ts +55 -1
- package/dist/codegen/index.cjs +618 -0
- package/dist/codegen/index.cjs.map +1 -0
- package/dist/codegen/index.js +100 -127
- package/dist/codegen/index.js.map +1 -1
- package/dist/collections/Changes.d.ts +2 -2
- package/dist/collections/MemoryDataCollection.d.ts +15 -1
- package/dist/collections/TagCollection.d.ts +7 -8
- package/dist/collections/index.cjs +702 -0
- package/dist/collections/index.cjs.map +1 -0
- package/dist/collections/index.js +282 -276
- package/dist/collections/index.js.map +1 -1
- package/dist/errors/OptimisticConcurrencyError.d.ts +18 -0
- package/dist/errors/PluginDestroyedError.d.ts +10 -0
- package/dist/errors/index.cjs +132 -0
- package/dist/errors/index.cjs.map +1 -0
- package/dist/errors/index.d.ts +2 -0
- package/dist/errors/index.js +61 -19
- package/dist/errors/index.js.map +1 -1
- package/dist/expressions/constants.d.ts +2 -0
- package/dist/expressions/evaluate.d.ts +53 -0
- package/dist/expressions/index.cjs +2087 -0
- package/dist/expressions/index.cjs.map +1 -0
- package/dist/expressions/index.d.ts +2 -0
- package/dist/expressions/index.js +1784 -772
- package/dist/expressions/index.js.map +1 -1
- package/dist/expressions/parser.d.ts +19 -0
- package/dist/expressions/types.d.ts +87 -2
- package/dist/expressions/utils.d.ts +1 -2
- package/dist/index.cjs +13925 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.js +12094 -7049
- package/dist/index.js.map +1 -1
- package/dist/performance/index.cjs +217 -0
- package/dist/performance/index.cjs.map +1 -0
- package/dist/performance/index.js +126 -50
- package/dist/performance/index.js.map +1 -1
- package/dist/pipeline/index.cjs +576 -0
- package/dist/pipeline/index.cjs.map +1 -0
- package/dist/pipeline/index.js +229 -156
- package/dist/pipeline/index.js.map +1 -1
- package/dist/plugins/BatchingDbPlugin.d.ts +139 -0
- package/dist/plugins/CacheDbPlugin.d.ts +70 -0
- package/dist/plugins/ConcurrencyDbPlugin.d.ts +78 -0
- package/dist/plugins/EphemeralDataPlugin.d.ts +57 -1
- package/dist/plugins/RetryDbPlugin.d.ts +77 -0
- package/dist/plugins/index.cjs +6104 -0
- package/dist/plugins/index.cjs.map +1 -0
- package/dist/plugins/index.d.ts +5 -1
- package/dist/plugins/index.js +5572 -1491
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/query/QueryOptionsCollection.d.ts +22 -0
- package/dist/plugins/query/index.d.ts +2 -0
- package/dist/plugins/query/join.d.ts +210 -0
- package/dist/plugins/query/similarity.d.ts +38 -0
- package/dist/plugins/query/types.d.ts +64 -1
- package/dist/plugins/translators/DataTranslator.d.ts +28 -0
- package/dist/plugins/translators/JsonTranslator.d.ts +27 -0
- package/dist/plugins/translators/SqlTranslator.d.ts +45 -0
- package/dist/plugins/translators/TranslatedArrayValue.d.ts +3 -1
- package/dist/plugins/translators/TranslatedGroupValue.d.ts +3 -1
- package/dist/plugins/translators/TranslatedSingleValue.d.ts +3 -1
- package/dist/plugins/translators/TupleTranslator.d.ts +45 -0
- package/dist/plugins/translators/index.d.ts +1 -0
- package/dist/plugins/translators/types.d.ts +8 -1
- package/dist/plugins/types.d.ts +87 -11
- package/dist/plugins/wire/handler.d.ts +122 -0
- package/dist/plugins/wire/index.d.ts +4 -0
- package/dist/plugins/wire/persist.d.ts +43 -0
- package/dist/plugins/wire/query.d.ts +49 -0
- package/dist/plugins/wire/types.d.ts +123 -0
- package/dist/results/Result.d.ts +2 -2
- package/dist/results/index.cjs +174 -0
- package/dist/results/index.cjs.map +1 -0
- package/dist/results/index.js +29 -44
- package/dist/results/index.js.map +1 -1
- package/dist/schema/PropertyInfo.d.ts +35 -2
- package/dist/schema/SchemaDefinition.d.ts +51 -1
- package/dist/schema/builder.d.ts +35 -1
- package/dist/schema/communication/broadcast.d.ts +17 -1
- package/dist/schema/index.cjs +6911 -0
- package/dist/schema/index.cjs.map +1 -0
- package/dist/schema/index.d.ts +4 -0
- package/dist/schema/index.js +5781 -3973
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/property/base/SchemaBase.d.ts +50 -2
- package/dist/schema/property/modifiers/SchemaDeserialize.d.ts +5 -1
- package/dist/schema/property/modifiers/SchemaForeignKey.d.ts +15 -0
- package/dist/schema/property/modifiers/SchemaKey.d.ts +2 -0
- package/dist/schema/property/modifiers/SchemaNullable.d.ts +15 -1
- package/dist/schema/property/modifiers/SchemaOptional.d.ts +22 -1
- package/dist/schema/property/modifiers/SchemaSearchable.d.ts +34 -0
- package/dist/schema/property/modifiers/SchemaTag.d.ts +27 -0
- package/dist/schema/property/modifiers/SchemaTracked.d.ts +5 -1
- package/dist/schema/property/modifiers/index.d.ts +3 -0
- package/dist/schema/property/types/SchemaArray.d.ts +2 -0
- package/dist/schema/property/types/SchemaBoolean.d.ts +2 -0
- package/dist/schema/property/types/SchemaDate.d.ts +2 -0
- package/dist/schema/property/types/SchemaFile.d.ts +60 -0
- package/dist/schema/property/types/SchemaNumber.d.ts +5 -1
- package/dist/schema/property/types/SchemaObject.d.ts +2 -0
- package/dist/schema/property/types/SchemaString.d.ts +25 -1
- package/dist/schema/property/types/SchemaVector.d.ts +61 -0
- package/dist/schema/property/types/index.d.ts +2 -0
- package/dist/schema/table/SchemaTransform.d.ts +40 -0
- package/dist/schema/table/index.d.ts +1 -0
- package/dist/schema/types.d.ts +200 -32
- package/dist/schema/utils/propertyKind.d.ts +4 -0
- package/dist/schema/utils/standardJsonSchema.d.ts +90 -0
- package/dist/types/index.cjs +23 -0
- package/dist/types/index.cjs.map +1 -0
- package/dist/types/index.js +0 -14
- package/dist/types/index.js.map +1 -1
- package/dist/utilities/functions.d.ts +1 -1
- package/dist/utilities/index.cjs +982 -0
- package/dist/utilities/index.cjs.map +1 -0
- package/dist/utilities/index.js +590 -321
- package/dist/utilities/index.js.map +1 -1
- package/dist/utilities/logger.d.ts +48 -0
- package/package.json +152 -98
- package/dist/collections/Changes.test.d.ts +0 -1
- package/dist/collections/MemoryDataCollection.test.d.ts +0 -1
- package/dist/collections/TagCollection.test.d.ts +0 -1
- package/dist/expressions/parser.test.d.ts +0 -1
- package/dist/expressions/utils.test.d.ts +0 -1
- package/dist/pipeline/SyncronousQueue.test.d.ts +0 -1
- package/dist/pipeline/WorkPipeline.test.d.ts +0 -1
- package/dist/plugins/EphemeralDataPlugin.test.d.ts +0 -1
- package/dist/plugins/query/QueryOptionsCollection.test.d.ts +0 -1
- package/dist/plugins/replication/OptimisticReplicationDbPlugin.d.ts +0 -23
- package/dist/plugins/replication/ReplicationDbPlugin.d.ts +0 -22
- package/dist/plugins/replication/index.d.ts +0 -3
- package/dist/plugins/replication/types.d.ts +0 -5
- package/dist/plugins/translators/JsonTranslator.test.d.ts +0 -1
- package/dist/schema/PropertyInfo.test.d.ts +0 -1
- package/dist/schema/schemaGeneration.test.d.ts +0 -1
- package/dist/schema/testSchemas.test.d.ts +0 -314
- package/dist/utilities/arrays.test.d.ts +0 -1
- package/dist/utilities/dates.test.d.ts +0 -1
- package/dist/utilities/strings.test.d.ts +0 -1
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
import { QueryOptionExecutionTarget } from "../plugins";
|
|
2
|
-
import { PropertyInfo } from "../schema";
|
|
2
|
+
import { CompiledSchemaCore, PropertyInfo } from "../schema";
|
|
3
|
+
/**
|
|
4
|
+
* JSON-safe form of a literal. Tagged only where JSON cannot carry the value as it is.
|
|
5
|
+
*
|
|
6
|
+
* See `Expression.toJson`.
|
|
7
|
+
*/
|
|
8
|
+
export type SerializedValue = {
|
|
9
|
+
k: "raw";
|
|
10
|
+
v: string | number | boolean | null;
|
|
11
|
+
} | {
|
|
12
|
+
k: "date";
|
|
13
|
+
v: string;
|
|
14
|
+
} | {
|
|
15
|
+
k: "undefined";
|
|
16
|
+
} | {
|
|
17
|
+
k: "number";
|
|
18
|
+
v: "NaN" | "Infinity" | "-Infinity";
|
|
19
|
+
} | {
|
|
20
|
+
k: "array";
|
|
21
|
+
v: SerializedValue[];
|
|
22
|
+
};
|
|
23
|
+
/** JSON-safe form of an expression tree. See `Expression.toJson`. */
|
|
24
|
+
export type SerializedExpression = {
|
|
25
|
+
t: "empty";
|
|
26
|
+
} | {
|
|
27
|
+
t: "not-parsable";
|
|
28
|
+
} | {
|
|
29
|
+
t: "operator";
|
|
30
|
+
operator: Operator;
|
|
31
|
+
left?: SerializedExpression;
|
|
32
|
+
right?: SerializedExpression;
|
|
33
|
+
} | {
|
|
34
|
+
t: "comparator";
|
|
35
|
+
comparator: Comparator;
|
|
36
|
+
negated: boolean;
|
|
37
|
+
strict: boolean;
|
|
38
|
+
left?: SerializedExpression;
|
|
39
|
+
right?: SerializedExpression;
|
|
40
|
+
} | {
|
|
41
|
+
t: "property";
|
|
42
|
+
path: string;
|
|
43
|
+
transformer: Transformer | null;
|
|
44
|
+
locale: string | null;
|
|
45
|
+
} | {
|
|
46
|
+
t: "value";
|
|
47
|
+
value: SerializedValue;
|
|
48
|
+
transformer: Transformer | null;
|
|
49
|
+
locale: string | null;
|
|
50
|
+
};
|
|
3
51
|
export type ParsedExpression = {
|
|
4
52
|
expression: Expression;
|
|
5
53
|
executionTarget: QueryOptionExecutionTarget;
|
|
@@ -19,6 +67,42 @@ export declare abstract class Expression {
|
|
|
19
67
|
static get NOT_PARSABLE(): NotParsableExpression;
|
|
20
68
|
static isEmpty(expression: Expression): boolean;
|
|
21
69
|
static isNotParsable(expression: Expression): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Turns a tree into plain JSON, so a whole query can cross a wire.
|
|
72
|
+
*
|
|
73
|
+
* On the class rather than beside it, because this is the type's own REPRESENTATION — there is one
|
|
74
|
+
* right answer and it belongs with the thing being represented, next to `EMPTY` and `isEmpty`.
|
|
75
|
+
* Rendering a tree into some other language (`toSql`, `toMql`, `evaluate`) is a different kind of
|
|
76
|
+
* thing: there are many, each belongs to its consumer, and none of them is canonical.
|
|
77
|
+
*
|
|
78
|
+
* ## Why it is this small
|
|
79
|
+
*
|
|
80
|
+
* Of the six node types a bound tree can contain, exactly one holds anything JSON cannot carry:
|
|
81
|
+
* `PropertyExpression`, whose live `PropertyInfo` has functions, a parent chain and caches. It
|
|
82
|
+
* reduces to a property PATH — `PropertyInfo.id` IS the dotted path, and `getProperty` is keyed by
|
|
83
|
+
* exactly that — so rebinding is one lookup.
|
|
84
|
+
*
|
|
85
|
+
* `ParamReferenceExpression` never appears: it is a parse-time placeholder that binding replaces
|
|
86
|
+
* with a plain `ValueExpression` holding the resolved value. A serialized tree is always already
|
|
87
|
+
* bound, so there is no params object to send alongside it.
|
|
88
|
+
*
|
|
89
|
+
* Switches on `type` rather than using the `isXExpression` guards, which live in `../assertions`
|
|
90
|
+
* and import this module — the guards test the same discriminant, so nothing is lost.
|
|
91
|
+
*/
|
|
92
|
+
static toJson(expression: Expression): SerializedExpression;
|
|
93
|
+
/**
|
|
94
|
+
* Rebuilds a tree from JSON, rebinding every property against `schema`.
|
|
95
|
+
*
|
|
96
|
+
* The schema is SUPPLIED rather than read out of the payload. A filter always belongs to a known
|
|
97
|
+
* collection, and the RECEIVER's schema is the authority on what its properties are — taking an
|
|
98
|
+
* id from the payload would mean rebinding against a schema the sender chose, which is backwards
|
|
99
|
+
* for anything crossing a trust boundary.
|
|
100
|
+
*
|
|
101
|
+
* @throws when a property path is not declared by `schema`. Not `NOT_PARSABLE`: on a receiver, a
|
|
102
|
+
* filter that silently stops filtering returns rows the requester excluded, which is the one
|
|
103
|
+
* failure here worse than an error.
|
|
104
|
+
*/
|
|
105
|
+
static fromJson(json: SerializedExpression, schema: CompiledSchemaCore<any>): Expression;
|
|
22
106
|
}
|
|
23
107
|
export declare class EmptyExpression extends Expression {
|
|
24
108
|
readonly type: "empty";
|
|
@@ -94,8 +178,9 @@ export declare class ValueExpression extends Expression {
|
|
|
94
178
|
export type ExpressionType = "operator" | "comparator" | "property" | "value" | "empty" | "not-parsable";
|
|
95
179
|
/**
|
|
96
180
|
* Supported value transformations that can be applied to values.
|
|
181
|
+
* `length` reads the length of a string or array property.
|
|
97
182
|
*/
|
|
98
|
-
export type Transformer = "to-lower-case" | "to-upper-case";
|
|
183
|
+
export type Transformer = "to-lower-case" | "to-upper-case" | "length";
|
|
99
184
|
/**
|
|
100
185
|
* Supported comparator operations for expressions.
|
|
101
186
|
*/
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { PropertyInfo } from "../schema";
|
|
2
|
-
import { Expression
|
|
2
|
+
import { Expression } from "./types";
|
|
3
3
|
/**
|
|
4
4
|
* Extracts all properties referenced in an expression
|
|
5
5
|
* @param expression The expression to analyze
|
|
6
6
|
* @returns Array of PropertyInfo objects referenced in the expression
|
|
7
7
|
*/
|
|
8
8
|
export declare function getProperties(expression: Expression): PropertyInfo<any>[];
|
|
9
|
-
export declare function isPropertyExpression(expression: Expression): expression is PropertyExpression;
|
|
10
9
|
export declare function forEach(expression: Expression, callback: (expression: Expression) => boolean): void;
|