@esposter/azure 4.3.1 → 4.3.3
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/index.d.ts +0 -50
- package/dist/index.js +23 -46
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { PropertyNames } from "@esposter/shared";
|
|
3
3
|
import { TableEntity } from "@azure/data-tables";
|
|
4
|
-
//#region src/models/search/SearchOperator.d.ts
|
|
5
4
|
export declare enum SearchOperator {
|
|
6
5
|
ArrayAny = "arrayAny",
|
|
7
6
|
ArrayContains = "arrayContains"
|
|
8
7
|
}
|
|
9
|
-
//#endregion
|
|
10
|
-
//#region src/models/shared/BinaryOperator.d.ts
|
|
11
8
|
export declare enum BinaryOperator {
|
|
12
9
|
Eq = "eq",
|
|
13
10
|
Ge = "ge",
|
|
@@ -17,12 +14,8 @@ export declare enum BinaryOperator {
|
|
|
17
14
|
Ne = "ne"
|
|
18
15
|
}
|
|
19
16
|
export declare const BinaryOperators: readonly BinaryOperator[];
|
|
20
|
-
//#endregion
|
|
21
|
-
//#region src/models/shared/SerializableValue.d.ts
|
|
22
17
|
export type SerializableValue = boolean | Date | null | number | string;
|
|
23
18
|
export declare const serializableValueSchema: z.ZodType<SerializableValue, SerializableValue>;
|
|
24
|
-
//#endregion
|
|
25
|
-
//#region src/models/shared/Clause.d.ts
|
|
26
19
|
export type Clause<T extends object> = {
|
|
27
20
|
key: keyof T & string;
|
|
28
21
|
not?: boolean;
|
|
@@ -35,15 +28,11 @@ export type Clause<T extends object> = {
|
|
|
35
28
|
operator: SearchOperator.ArrayContains;
|
|
36
29
|
value: SerializableValue[];
|
|
37
30
|
});
|
|
38
|
-
//#endregion
|
|
39
|
-
//#region src/models/shared/UnaryOperator.d.ts
|
|
40
31
|
export declare enum UnaryOperator {
|
|
41
32
|
And = "and",
|
|
42
33
|
Not = "not",
|
|
43
34
|
Or = "or"
|
|
44
35
|
}
|
|
45
|
-
//#endregion
|
|
46
|
-
//#region ../../node_modules/.pnpm/type-fest@5.10.0/node_modules/type-fest/source/omit-index-signature.d.ts
|
|
47
36
|
/**
|
|
48
37
|
Omit any index signatures from the given object type, leaving only explicitly defined properties.
|
|
49
38
|
|
|
@@ -136,74 +125,35 @@ type ExampleWithoutIndexSignatures = OmitIndexSignature<Example>;
|
|
|
136
125
|
@category Object
|
|
137
126
|
*/
|
|
138
127
|
type OmitIndexSignature<ObjectType> = { [KeyType in keyof ObjectType as {} extends Record<KeyType, unknown> ? never : KeyType]: ObjectType[KeyType]; };
|
|
139
|
-
//#endregion
|
|
140
|
-
//#region src/models/table/CompositeKey.d.ts
|
|
141
128
|
export declare class CompositeKey implements OmitIndexSignature<TableEntity> {
|
|
142
129
|
partitionKey: string;
|
|
143
130
|
rowKey: string;
|
|
144
131
|
}
|
|
145
132
|
export declare const CompositeKeyPropertyNames: PropertyNames<CompositeKey>;
|
|
146
|
-
//#endregion
|
|
147
|
-
//#region src/services/search/getSearchNonNullClause.d.ts
|
|
148
133
|
export declare const getSearchNonNullClause: <T extends object>(key: keyof T & string) => Clause<T>;
|
|
149
|
-
//#endregion
|
|
150
|
-
//#region src/services/search/getSearchNullClause.d.ts
|
|
151
134
|
export declare const getSearchNullClause: <T extends object>(key: keyof T & string) => Clause<T>;
|
|
152
|
-
//#endregion
|
|
153
|
-
//#region src/services/shared/constants.d.ts
|
|
154
135
|
export declare const AZURE_MAX_BATCH_SIZE = 100;
|
|
155
136
|
export declare const AZURE_MAX_PAGE_SIZE = 1e3;
|
|
156
137
|
export declare const SERIALIZABLE_VALUE_MAX_LENGTH = 100;
|
|
157
138
|
export declare const AZURE_MAX_QUEUE_VISIBILITY_TIMEOUT_MS: number;
|
|
158
139
|
export declare const AZURE_MAX_STRING_PROPERTY_LENGTH: number;
|
|
159
|
-
//#endregion
|
|
160
|
-
//#region src/services/table/constants.d.ts
|
|
161
140
|
export declare const KEYS_TO_CAPITALIZE: ReadonlySet<string>;
|
|
162
141
|
export declare const KEYS_TO_UNCAPITALIZE: ReadonlySet<string>;
|
|
163
|
-
//#endregion
|
|
164
|
-
//#region src/services/table/deserializeKey.d.ts
|
|
165
142
|
export declare const deserializeKey: (key: string) => string;
|
|
166
|
-
//#endregion
|
|
167
|
-
//#region src/services/table/getTableNullClause.d.ts
|
|
168
143
|
export declare const getTableNullClause: <T extends object>(key: keyof T & string) => Clause<T>;
|
|
169
|
-
//#endregion
|
|
170
|
-
//#region src/services/table/serializeKey.d.ts
|
|
171
144
|
export declare const serializeKey: (key: string) => string;
|
|
172
|
-
//#endregion
|
|
173
|
-
//#region src/services/transformer/RangeOperators.d.ts
|
|
174
145
|
export declare const RangeOperators: (BinaryOperator | SearchOperator)[];
|
|
175
|
-
//#endregion
|
|
176
|
-
//#region src/services/transformer/constants.d.ts
|
|
177
146
|
export declare const DATETIME_LITERAL_PREFIX = "datetime'";
|
|
178
147
|
export declare const CLAUSE_REGEX: RegExp;
|
|
179
|
-
//#endregion
|
|
180
|
-
//#region src/services/transformer/deserializeClause.d.ts
|
|
181
148
|
export declare const deserializeClause: (serializedClause: string) => Extract<Clause<Record<string, unknown>>, {
|
|
182
149
|
operator: BinaryOperator;
|
|
183
150
|
}>;
|
|
184
|
-
//#endregion
|
|
185
|
-
//#region src/services/transformer/deserializeValue.d.ts
|
|
186
151
|
export declare const deserializeValue: (serializedValue: string) => SerializableValue;
|
|
187
|
-
//#endregion
|
|
188
|
-
//#region src/services/transformer/escapeValue.d.ts
|
|
189
152
|
export declare const escapeValue: (value: string) => string;
|
|
190
|
-
//#endregion
|
|
191
|
-
//#region src/services/transformer/getPartitionKeyFilter.d.ts
|
|
192
153
|
export declare const getPartitionKeyFilter: (partitionKey: CompositeKey["partitionKey"]) => string;
|
|
193
|
-
//#endregion
|
|
194
|
-
//#region src/services/transformer/serializeClause.d.ts
|
|
195
154
|
export declare const serializeClause: (clause: Clause<Record<string, unknown>>, isTableFilter?: boolean) => string;
|
|
196
|
-
//#endregion
|
|
197
|
-
//#region src/services/transformer/serializeClauses.d.ts
|
|
198
155
|
export declare const serializeClauses: (clauses: Clause<Record<string, unknown>>[]) => string;
|
|
199
|
-
//#endregion
|
|
200
|
-
//#region src/services/transformer/serializeClausesCore.d.ts
|
|
201
156
|
export declare const serializeClausesCore: (clauses: Clause<Record<string, unknown>>[], isTableFilter: boolean) => string;
|
|
202
|
-
//#endregion
|
|
203
|
-
//#region src/services/transformer/serializeSearchClauses.d.ts
|
|
204
157
|
export declare const serializeSearchClauses: (clauses: Clause<Record<string, unknown>>[]) => string;
|
|
205
|
-
//#endregion
|
|
206
|
-
//#region src/services/transformer/serializeValue.d.ts
|
|
207
158
|
export declare const serializeValue: (value: SerializableValue, isTableFilter?: boolean) => string;
|
|
208
|
-
//#endregion
|
|
209
159
|
export {};
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { InvalidOperationError, NotFoundError, Operation, capitalize, getPropertyNames, getResult, normalizeString, takeOne, uncapitalize } from "@esposter/shared";
|
|
3
|
-
|
|
3
|
+
// src/models/search/SearchOperator.ts
|
|
4
4
|
let SearchOperator = /* @__PURE__ */ function(SearchOperator) {
|
|
5
5
|
SearchOperator["ArrayAny"] = "arrayAny";
|
|
6
6
|
SearchOperator["ArrayContains"] = "arrayContains";
|
|
7
7
|
return SearchOperator;
|
|
8
8
|
}({});
|
|
9
|
-
|
|
10
|
-
//#region src/models/shared/BinaryOperator.ts
|
|
9
|
+
// src/models/shared/BinaryOperator.ts
|
|
11
10
|
let BinaryOperator = /* @__PURE__ */ function(BinaryOperator) {
|
|
12
11
|
BinaryOperator["Eq"] = "eq";
|
|
13
12
|
BinaryOperator["Ge"] = "ge";
|
|
@@ -18,15 +17,13 @@ let BinaryOperator = /* @__PURE__ */ function(BinaryOperator) {
|
|
|
18
17
|
return BinaryOperator;
|
|
19
18
|
}({});
|
|
20
19
|
const BinaryOperators = Object.values(BinaryOperator);
|
|
21
|
-
|
|
22
|
-
//#region src/services/shared/constants.ts
|
|
20
|
+
// src/services/shared/constants.ts
|
|
23
21
|
const AZURE_MAX_BATCH_SIZE = 100;
|
|
24
22
|
const AZURE_MAX_PAGE_SIZE = 1e3;
|
|
25
23
|
const SERIALIZABLE_VALUE_MAX_LENGTH = 100;
|
|
26
24
|
const AZURE_MAX_QUEUE_VISIBILITY_TIMEOUT_MS = Temporal.Duration.from({ days: 7 }).total("milliseconds");
|
|
27
25
|
const AZURE_MAX_STRING_PROPERTY_LENGTH = 32768;
|
|
28
|
-
|
|
29
|
-
//#region src/models/shared/SerializableValue.ts
|
|
26
|
+
// src/models/shared/SerializableValue.ts
|
|
30
27
|
const serializableValueSchema = z.union([
|
|
31
28
|
z.boolean(),
|
|
32
29
|
z.date(),
|
|
@@ -34,60 +31,50 @@ const serializableValueSchema = z.union([
|
|
|
34
31
|
z.number(),
|
|
35
32
|
z.string().min(1).max(100)
|
|
36
33
|
]);
|
|
37
|
-
|
|
38
|
-
//#region src/models/shared/UnaryOperator.ts
|
|
34
|
+
// src/models/shared/UnaryOperator.ts
|
|
39
35
|
let UnaryOperator = /* @__PURE__ */ function(UnaryOperator) {
|
|
40
36
|
UnaryOperator["And"] = "and";
|
|
41
37
|
UnaryOperator["Not"] = "not";
|
|
42
38
|
UnaryOperator["Or"] = "or";
|
|
43
39
|
return UnaryOperator;
|
|
44
40
|
}({});
|
|
45
|
-
|
|
46
|
-
//#region src/models/table/CompositeKey.ts
|
|
41
|
+
// src/models/table/CompositeKey.ts
|
|
47
42
|
var CompositeKey = class {};
|
|
48
43
|
const CompositeKeyPropertyNames = getPropertyNames();
|
|
49
|
-
|
|
50
|
-
//#region src/services/search/getSearchNonNullClause.ts
|
|
44
|
+
// src/services/search/getSearchNonNullClause.ts
|
|
51
45
|
const getSearchNonNullClause = (key) => ({
|
|
52
46
|
key,
|
|
53
47
|
operator: "ne",
|
|
54
48
|
value: null
|
|
55
49
|
});
|
|
56
|
-
|
|
57
|
-
//#region src/services/search/getSearchNullClause.ts
|
|
50
|
+
// src/services/search/getSearchNullClause.ts
|
|
58
51
|
const getSearchNullClause = (key) => ({
|
|
59
52
|
key,
|
|
60
53
|
operator: "eq",
|
|
61
54
|
value: null
|
|
62
55
|
});
|
|
63
|
-
|
|
64
|
-
//#region src/services/table/constants.ts
|
|
56
|
+
// src/services/table/constants.ts
|
|
65
57
|
const KEYS_TO_CAPITALIZE = /* @__PURE__ */ new Set([CompositeKeyPropertyNames.partitionKey, CompositeKeyPropertyNames.rowKey]);
|
|
66
58
|
const KEYS_TO_UNCAPITALIZE = /* @__PURE__ */ new Set([capitalize(CompositeKeyPropertyNames.partitionKey), capitalize(CompositeKeyPropertyNames.rowKey)]);
|
|
67
|
-
|
|
68
|
-
//#region src/services/table/deserializeKey.ts
|
|
59
|
+
// src/services/table/deserializeKey.ts
|
|
69
60
|
const deserializeKey = (key) => KEYS_TO_UNCAPITALIZE.has(key) ? uncapitalize(key) : key;
|
|
70
|
-
|
|
71
|
-
//#region src/services/table/getTableNullClause.ts
|
|
61
|
+
// src/services/table/getTableNullClause.ts
|
|
72
62
|
const getTableNullClause = (key) => ({
|
|
73
63
|
key,
|
|
74
64
|
not: true,
|
|
75
65
|
operator: "ne",
|
|
76
66
|
value: NaN
|
|
77
67
|
});
|
|
78
|
-
|
|
79
|
-
//#region src/services/table/serializeKey.ts
|
|
68
|
+
// src/services/table/serializeKey.ts
|
|
80
69
|
const serializeKey = (key) => KEYS_TO_CAPITALIZE.has(key) ? capitalize(key) : key;
|
|
81
|
-
|
|
82
|
-
//#region src/services/transformer/RangeOperators.ts
|
|
70
|
+
// src/services/transformer/RangeOperators.ts
|
|
83
71
|
const RangeOperators = [
|
|
84
72
|
"ge",
|
|
85
73
|
"gt",
|
|
86
74
|
"le",
|
|
87
75
|
"lt"
|
|
88
76
|
];
|
|
89
|
-
|
|
90
|
-
//#region src/services/transformer/constants.ts
|
|
77
|
+
// src/services/transformer/constants.ts
|
|
91
78
|
const DATETIME_LITERAL_PREFIX = "datetime'";
|
|
92
79
|
const VALUE_REGEX = [
|
|
93
80
|
true,
|
|
@@ -100,8 +87,7 @@ const VALUE_REGEX = [
|
|
|
100
87
|
"'(?:[^']|'')*'"
|
|
101
88
|
].join("|");
|
|
102
89
|
const CLAUSE_REGEX = new RegExp(String.raw`^(?<not>not\s+)?(?<key>[A-Za-z0-9_]*)\s*(?<operator>${BinaryOperators.join("|")})\s+(?<value>${VALUE_REGEX})$`, "iu");
|
|
103
|
-
|
|
104
|
-
//#region src/services/transformer/deserializeValue.ts
|
|
90
|
+
// src/services/transformer/deserializeValue.ts
|
|
105
91
|
const parseIsoDate = (isoValue) => getResult(() => new Date(Temporal.Instant.from(isoValue).epochMilliseconds)).unwrapOr(void 0);
|
|
106
92
|
const deserializeValue = (serializedValue) => {
|
|
107
93
|
if (serializedValue === String(true)) return true;
|
|
@@ -113,8 +99,7 @@ const deserializeValue = (serializedValue) => {
|
|
|
113
99
|
else if (serializedValue.startsWith("'") && serializedValue.endsWith("'")) return serializedValue.slice(1, -1).replaceAll("''", "'");
|
|
114
100
|
else return parseIsoDate(serializedValue) ?? serializedValue;
|
|
115
101
|
};
|
|
116
|
-
|
|
117
|
-
//#region src/services/transformer/deserializeClause.ts
|
|
102
|
+
// src/services/transformer/deserializeClause.ts
|
|
118
103
|
const deserializeClause = (serializedClause) => {
|
|
119
104
|
const normalizedClause = normalizeString(serializedClause);
|
|
120
105
|
const match = CLAUSE_REGEX.exec(normalizedClause);
|
|
@@ -128,18 +113,15 @@ const deserializeClause = (serializedClause) => {
|
|
|
128
113
|
value: deserializeValue(groups.value)
|
|
129
114
|
};
|
|
130
115
|
};
|
|
131
|
-
|
|
132
|
-
//#region src/services/transformer/escapeValue.ts
|
|
116
|
+
// src/services/transformer/escapeValue.ts
|
|
133
117
|
const escapeValue = (value) => `'${value.replaceAll("'", "''")}'`;
|
|
134
|
-
|
|
135
|
-
//#region src/services/transformer/serializeValue.ts
|
|
118
|
+
// src/services/transformer/serializeValue.ts
|
|
136
119
|
const serializeValue = (value, isTableFilter = false) => {
|
|
137
120
|
if (value instanceof Date) return isTableFilter ? `${DATETIME_LITERAL_PREFIX}${value.toISOString()}'` : value.toISOString();
|
|
138
121
|
else if (typeof value === "string") return escapeValue(value);
|
|
139
122
|
else return String(value);
|
|
140
123
|
};
|
|
141
|
-
|
|
142
|
-
//#region src/services/transformer/serializeClause.ts
|
|
124
|
+
// src/services/transformer/serializeClause.ts
|
|
143
125
|
const serializeClause = (clause, isTableFilter = false) => {
|
|
144
126
|
const keys = clause.key.split("/").map((key) => serializeKey(key));
|
|
145
127
|
const clauseKey = keys.join("/");
|
|
@@ -156,8 +138,7 @@ const serializeClause = (clause, isTableFilter = false) => {
|
|
|
156
138
|
const baseClause = `${clauseKey} ${operator} ${serializeValue(value, isTableFilter)}`;
|
|
157
139
|
return not ? `not(${baseClause})` : baseClause;
|
|
158
140
|
};
|
|
159
|
-
|
|
160
|
-
//#region src/services/transformer/serializeClausesCore.ts
|
|
141
|
+
// src/services/transformer/serializeClausesCore.ts
|
|
161
142
|
const serializeClausesCore = (clauses, isTableFilter) => {
|
|
162
143
|
if (clauses.length === 0) return "";
|
|
163
144
|
else if (clauses.length === 1) return serializeClause(takeOne(clauses), isTableFilter);
|
|
@@ -173,18 +154,14 @@ const serializeClausesCore = (clauses, isTableFilter) => {
|
|
|
173
154
|
return groupedStrings.join(` and `);
|
|
174
155
|
}
|
|
175
156
|
};
|
|
176
|
-
|
|
177
|
-
//#region src/services/transformer/serializeClauses.ts
|
|
157
|
+
// src/services/transformer/serializeClauses.ts
|
|
178
158
|
const serializeClauses = (clauses) => serializeClausesCore(clauses, true);
|
|
179
|
-
|
|
180
|
-
//#region src/services/transformer/getPartitionKeyFilter.ts
|
|
159
|
+
// src/services/transformer/getPartitionKeyFilter.ts
|
|
181
160
|
const getPartitionKeyFilter = (partitionKey) => serializeClauses([{
|
|
182
161
|
key: CompositeKeyPropertyNames.partitionKey,
|
|
183
162
|
operator: "eq",
|
|
184
163
|
value: partitionKey
|
|
185
164
|
}]);
|
|
186
|
-
|
|
187
|
-
//#region src/services/transformer/serializeSearchClauses.ts
|
|
165
|
+
// src/services/transformer/serializeSearchClauses.ts
|
|
188
166
|
const serializeSearchClauses = (clauses) => serializeClausesCore(clauses, false);
|
|
189
|
-
//#endregion
|
|
190
167
|
export { AZURE_MAX_BATCH_SIZE, AZURE_MAX_PAGE_SIZE, AZURE_MAX_QUEUE_VISIBILITY_TIMEOUT_MS, AZURE_MAX_STRING_PROPERTY_LENGTH, BinaryOperator, BinaryOperators, CLAUSE_REGEX, CompositeKey, CompositeKeyPropertyNames, DATETIME_LITERAL_PREFIX, KEYS_TO_CAPITALIZE, KEYS_TO_UNCAPITALIZE, RangeOperators, SERIALIZABLE_VALUE_MAX_LENGTH, SearchOperator, UnaryOperator, deserializeClause, deserializeKey, deserializeValue, escapeValue, getPartitionKeyFilter, getSearchNonNullClause, getSearchNullClause, getTableNullClause, serializableValueSchema, serializeClause, serializeClauses, serializeClausesCore, serializeKey, serializeSearchClauses, serializeValue };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@esposter/azure",
|
|
3
|
-
"version": "4.3.
|
|
3
|
+
"version": "4.3.3",
|
|
4
4
|
"description": "The Azure wire conventions Esposter's clients and its mocks both speak — OData filter clauses, entity key casing, and service limits.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"azure",
|
|
@@ -44,10 +44,10 @@
|
|
|
44
44
|
"typecheck": "tsc"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@esposter/shared": "4.3.
|
|
47
|
+
"@esposter/shared": "4.3.3"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@esposter/configuration": "4.3.
|
|
50
|
+
"@esposter/configuration": "4.3.3",
|
|
51
51
|
"tsdown": "^0.23.1",
|
|
52
52
|
"type-fest": "^5.10.0"
|
|
53
53
|
},
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"inlinedDependencies": {
|
|
59
59
|
"type-fest": "5.10.0"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "955bbc130ad9b28877fd4ae8efc73a045141ce01"
|
|
62
62
|
}
|