@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.
Files changed (174) hide show
  1. package/LICENSE +21 -0
  2. package/{readme.md → README.md} +2 -2
  3. package/dist/assertions/index.cjs +191 -0
  4. package/dist/assertions/index.cjs.map +1 -0
  5. package/dist/assertions/index.d.ts +30 -0
  6. package/dist/assertions/index.js +94 -30
  7. package/dist/assertions/index.js.map +1 -1
  8. package/dist/capabilities/index.cjs +820 -0
  9. package/dist/capabilities/index.cjs.map +1 -0
  10. package/dist/capabilities/index.js +580 -545
  11. package/dist/capabilities/index.js.map +1 -1
  12. package/dist/codegen/handlers/CloneHandlerBuilder.d.ts +10 -1
  13. package/dist/codegen/handlers/SetHandlerBuilder.d.ts +4 -0
  14. package/dist/codegen/handlers/clone/CloneArrayHandler.d.ts +3 -0
  15. package/dist/codegen/handlers/clone/CloneDateHandler.d.ts +13 -0
  16. package/dist/codegen/handlers/clone/CloneValueHandler.d.ts +16 -0
  17. package/dist/codegen/handlers/compare/CompareComputedHandler.d.ts +10 -0
  18. package/dist/codegen/handlers/compare/CompareFunctionHandler.d.ts +10 -0
  19. package/dist/codegen/handlers/deserialize/DeserializeArrayHandler.d.ts +14 -0
  20. package/dist/codegen/handlers/enableChangeTracking/EnableChangeTrackingArrayHandler.d.ts +11 -0
  21. package/dist/codegen/handlers/enrichment/EnrichmentArrayHandler.d.ts +11 -0
  22. package/dist/codegen/handlers/freeze/FreezeArrayHandler.d.ts +6 -0
  23. package/dist/codegen/handlers/hash/HashArrayHandler.d.ts +10 -0
  24. package/dist/codegen/handlers/hash/HashFileHandler.d.ts +24 -0
  25. package/dist/codegen/handlers/hash/HashObjectHandler.d.ts +10 -0
  26. package/dist/codegen/handlers/hash/HashTransformHandler.d.ts +23 -0
  27. package/dist/codegen/handlers/index.d.ts +1 -0
  28. package/dist/codegen/handlers/merge/MergeArrayHandler.d.ts +20 -0
  29. package/dist/codegen/handlers/merge/MergeObjectHandler.d.ts +10 -0
  30. package/dist/codegen/handlers/serialize/SerializeArrayHandler.d.ts +19 -0
  31. package/dist/codegen/handlers/serialize/SerializeComputedHandler.d.ts +6 -0
  32. package/dist/codegen/handlers/set/SetComplexHandler.d.ts +6 -0
  33. package/dist/codegen/handlers/strip/StripComputedHandler.d.ts +10 -0
  34. package/dist/codegen/handlers/strip/StripFunctionHandler.d.ts +9 -0
  35. package/dist/codegen/handlers/types.d.ts +55 -1
  36. package/dist/codegen/index.cjs +618 -0
  37. package/dist/codegen/index.cjs.map +1 -0
  38. package/dist/codegen/index.js +100 -127
  39. package/dist/codegen/index.js.map +1 -1
  40. package/dist/collections/Changes.d.ts +2 -2
  41. package/dist/collections/MemoryDataCollection.d.ts +15 -1
  42. package/dist/collections/TagCollection.d.ts +7 -8
  43. package/dist/collections/index.cjs +702 -0
  44. package/dist/collections/index.cjs.map +1 -0
  45. package/dist/collections/index.js +282 -276
  46. package/dist/collections/index.js.map +1 -1
  47. package/dist/errors/OptimisticConcurrencyError.d.ts +18 -0
  48. package/dist/errors/PluginDestroyedError.d.ts +10 -0
  49. package/dist/errors/index.cjs +132 -0
  50. package/dist/errors/index.cjs.map +1 -0
  51. package/dist/errors/index.d.ts +2 -0
  52. package/dist/errors/index.js +61 -19
  53. package/dist/errors/index.js.map +1 -1
  54. package/dist/expressions/constants.d.ts +2 -0
  55. package/dist/expressions/evaluate.d.ts +53 -0
  56. package/dist/expressions/index.cjs +2087 -0
  57. package/dist/expressions/index.cjs.map +1 -0
  58. package/dist/expressions/index.d.ts +2 -0
  59. package/dist/expressions/index.js +1784 -772
  60. package/dist/expressions/index.js.map +1 -1
  61. package/dist/expressions/parser.d.ts +19 -0
  62. package/dist/expressions/types.d.ts +87 -2
  63. package/dist/expressions/utils.d.ts +1 -2
  64. package/dist/index.cjs +13925 -0
  65. package/dist/index.cjs.map +1 -0
  66. package/dist/index.js +12094 -7049
  67. package/dist/index.js.map +1 -1
  68. package/dist/performance/index.cjs +217 -0
  69. package/dist/performance/index.cjs.map +1 -0
  70. package/dist/performance/index.js +126 -50
  71. package/dist/performance/index.js.map +1 -1
  72. package/dist/pipeline/index.cjs +576 -0
  73. package/dist/pipeline/index.cjs.map +1 -0
  74. package/dist/pipeline/index.js +229 -156
  75. package/dist/pipeline/index.js.map +1 -1
  76. package/dist/plugins/BatchingDbPlugin.d.ts +139 -0
  77. package/dist/plugins/CacheDbPlugin.d.ts +70 -0
  78. package/dist/plugins/ConcurrencyDbPlugin.d.ts +78 -0
  79. package/dist/plugins/EphemeralDataPlugin.d.ts +57 -1
  80. package/dist/plugins/RetryDbPlugin.d.ts +77 -0
  81. package/dist/plugins/index.cjs +6104 -0
  82. package/dist/plugins/index.cjs.map +1 -0
  83. package/dist/plugins/index.d.ts +5 -1
  84. package/dist/plugins/index.js +5572 -1491
  85. package/dist/plugins/index.js.map +1 -1
  86. package/dist/plugins/query/QueryOptionsCollection.d.ts +22 -0
  87. package/dist/plugins/query/index.d.ts +2 -0
  88. package/dist/plugins/query/join.d.ts +210 -0
  89. package/dist/plugins/query/similarity.d.ts +38 -0
  90. package/dist/plugins/query/types.d.ts +64 -1
  91. package/dist/plugins/translators/DataTranslator.d.ts +28 -0
  92. package/dist/plugins/translators/JsonTranslator.d.ts +27 -0
  93. package/dist/plugins/translators/SqlTranslator.d.ts +45 -0
  94. package/dist/plugins/translators/TranslatedArrayValue.d.ts +3 -1
  95. package/dist/plugins/translators/TranslatedGroupValue.d.ts +3 -1
  96. package/dist/plugins/translators/TranslatedSingleValue.d.ts +3 -1
  97. package/dist/plugins/translators/TupleTranslator.d.ts +45 -0
  98. package/dist/plugins/translators/index.d.ts +1 -0
  99. package/dist/plugins/translators/types.d.ts +8 -1
  100. package/dist/plugins/types.d.ts +87 -11
  101. package/dist/plugins/wire/handler.d.ts +122 -0
  102. package/dist/plugins/wire/index.d.ts +4 -0
  103. package/dist/plugins/wire/persist.d.ts +43 -0
  104. package/dist/plugins/wire/query.d.ts +49 -0
  105. package/dist/plugins/wire/types.d.ts +123 -0
  106. package/dist/results/Result.d.ts +2 -2
  107. package/dist/results/index.cjs +174 -0
  108. package/dist/results/index.cjs.map +1 -0
  109. package/dist/results/index.js +29 -44
  110. package/dist/results/index.js.map +1 -1
  111. package/dist/schema/PropertyInfo.d.ts +35 -2
  112. package/dist/schema/SchemaDefinition.d.ts +51 -1
  113. package/dist/schema/builder.d.ts +35 -1
  114. package/dist/schema/communication/broadcast.d.ts +17 -1
  115. package/dist/schema/index.cjs +6911 -0
  116. package/dist/schema/index.cjs.map +1 -0
  117. package/dist/schema/index.d.ts +4 -0
  118. package/dist/schema/index.js +5781 -3973
  119. package/dist/schema/index.js.map +1 -1
  120. package/dist/schema/property/base/SchemaBase.d.ts +50 -2
  121. package/dist/schema/property/modifiers/SchemaDeserialize.d.ts +5 -1
  122. package/dist/schema/property/modifiers/SchemaForeignKey.d.ts +15 -0
  123. package/dist/schema/property/modifiers/SchemaKey.d.ts +2 -0
  124. package/dist/schema/property/modifiers/SchemaNullable.d.ts +15 -1
  125. package/dist/schema/property/modifiers/SchemaOptional.d.ts +22 -1
  126. package/dist/schema/property/modifiers/SchemaSearchable.d.ts +34 -0
  127. package/dist/schema/property/modifiers/SchemaTag.d.ts +27 -0
  128. package/dist/schema/property/modifiers/SchemaTracked.d.ts +5 -1
  129. package/dist/schema/property/modifiers/index.d.ts +3 -0
  130. package/dist/schema/property/types/SchemaArray.d.ts +2 -0
  131. package/dist/schema/property/types/SchemaBoolean.d.ts +2 -0
  132. package/dist/schema/property/types/SchemaDate.d.ts +2 -0
  133. package/dist/schema/property/types/SchemaFile.d.ts +60 -0
  134. package/dist/schema/property/types/SchemaNumber.d.ts +5 -1
  135. package/dist/schema/property/types/SchemaObject.d.ts +2 -0
  136. package/dist/schema/property/types/SchemaString.d.ts +25 -1
  137. package/dist/schema/property/types/SchemaVector.d.ts +61 -0
  138. package/dist/schema/property/types/index.d.ts +2 -0
  139. package/dist/schema/table/SchemaTransform.d.ts +40 -0
  140. package/dist/schema/table/index.d.ts +1 -0
  141. package/dist/schema/types.d.ts +200 -32
  142. package/dist/schema/utils/propertyKind.d.ts +4 -0
  143. package/dist/schema/utils/standardJsonSchema.d.ts +90 -0
  144. package/dist/types/index.cjs +23 -0
  145. package/dist/types/index.cjs.map +1 -0
  146. package/dist/types/index.js +0 -14
  147. package/dist/types/index.js.map +1 -1
  148. package/dist/utilities/functions.d.ts +1 -1
  149. package/dist/utilities/index.cjs +982 -0
  150. package/dist/utilities/index.cjs.map +1 -0
  151. package/dist/utilities/index.js +590 -321
  152. package/dist/utilities/index.js.map +1 -1
  153. package/dist/utilities/logger.d.ts +48 -0
  154. package/package.json +152 -98
  155. package/dist/collections/Changes.test.d.ts +0 -1
  156. package/dist/collections/MemoryDataCollection.test.d.ts +0 -1
  157. package/dist/collections/TagCollection.test.d.ts +0 -1
  158. package/dist/expressions/parser.test.d.ts +0 -1
  159. package/dist/expressions/utils.test.d.ts +0 -1
  160. package/dist/pipeline/SyncronousQueue.test.d.ts +0 -1
  161. package/dist/pipeline/WorkPipeline.test.d.ts +0 -1
  162. package/dist/plugins/EphemeralDataPlugin.test.d.ts +0 -1
  163. package/dist/plugins/query/QueryOptionsCollection.test.d.ts +0 -1
  164. package/dist/plugins/replication/OptimisticReplicationDbPlugin.d.ts +0 -23
  165. package/dist/plugins/replication/ReplicationDbPlugin.d.ts +0 -22
  166. package/dist/plugins/replication/index.d.ts +0 -3
  167. package/dist/plugins/replication/types.d.ts +0 -5
  168. package/dist/plugins/translators/JsonTranslator.test.d.ts +0 -1
  169. package/dist/schema/PropertyInfo.test.d.ts +0 -1
  170. package/dist/schema/schemaGeneration.test.d.ts +0 -1
  171. package/dist/schema/testSchemas.test.d.ts +0 -314
  172. package/dist/utilities/arrays.test.d.ts +0 -1
  173. package/dist/utilities/dates.test.d.ts +0 -1
  174. 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, PropertyExpression } from "./types";
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;