@secondlayer/shared 4.0.1 → 4.1.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/dist/src/db/index.js +130 -2
- package/dist/src/db/index.js.map +6 -4
- package/dist/src/index.d.ts +142 -1
- package/dist/src/index.js +283 -117
- package/dist/src/index.js.map +7 -6
- package/dist/src/schemas/index.d.ts +142 -1
- package/dist/src/schemas/index.js +154 -1
- package/dist/src/schemas/index.js.map +5 -4
- package/dist/src/schemas/subscriptions.d.ts +142 -0
- package/dist/src/schemas/subscriptions.js +173 -0
- package/dist/src/schemas/subscriptions.js.map +10 -0
- package/package.json +5 -1
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __returnValue = (v) => v;
|
|
4
|
+
function __exportSetter(name, newValue) {
|
|
5
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
6
|
+
}
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, {
|
|
10
|
+
get: all[name],
|
|
11
|
+
enumerable: true,
|
|
12
|
+
configurable: true,
|
|
13
|
+
set: __exportSetter.bind(all, name)
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// src/schemas/subscriptions.ts
|
|
18
|
+
import { z } from "zod/v4";
|
|
19
|
+
var SUBSCRIPTION_FORMATS = [
|
|
20
|
+
"standard-webhooks",
|
|
21
|
+
"inngest",
|
|
22
|
+
"trigger",
|
|
23
|
+
"cloudflare",
|
|
24
|
+
"cloudevents",
|
|
25
|
+
"raw"
|
|
26
|
+
];
|
|
27
|
+
var SUBSCRIPTION_RUNTIMES = [
|
|
28
|
+
"inngest",
|
|
29
|
+
"trigger",
|
|
30
|
+
"cloudflare",
|
|
31
|
+
"node"
|
|
32
|
+
];
|
|
33
|
+
var SUBSCRIPTION_STATUSES = ["active", "paused", "error"];
|
|
34
|
+
var SUBSCRIPTION_FILTER_OPERATORS = [
|
|
35
|
+
"eq",
|
|
36
|
+
"neq",
|
|
37
|
+
"gt",
|
|
38
|
+
"gte",
|
|
39
|
+
"lt",
|
|
40
|
+
"lte",
|
|
41
|
+
"in"
|
|
42
|
+
];
|
|
43
|
+
var webhookUrl = z.string().trim().min(1).refine((value) => value.startsWith("http://") || value.startsWith("https://"), "must be an http(s) URL");
|
|
44
|
+
var name = z.string().trim().min(1).max(128);
|
|
45
|
+
var resourceName = z.string().trim().min(1).max(128);
|
|
46
|
+
var SubscriptionStatusSchema = z.enum(SUBSCRIPTION_STATUSES);
|
|
47
|
+
var SubscriptionFormatSchema = z.enum(SUBSCRIPTION_FORMATS);
|
|
48
|
+
var SubscriptionRuntimeSchema = z.enum(SUBSCRIPTION_RUNTIMES);
|
|
49
|
+
var SubscriptionFilterPrimitiveSchema = z.union([z.string(), z.number().finite(), z.boolean()]);
|
|
50
|
+
var SubscriptionFilterOperatorSchema = z.union([
|
|
51
|
+
z.object({ eq: SubscriptionFilterPrimitiveSchema }).strict(),
|
|
52
|
+
z.object({ neq: SubscriptionFilterPrimitiveSchema }).strict(),
|
|
53
|
+
z.object({ gt: z.union([z.string(), z.number().finite()]) }).strict(),
|
|
54
|
+
z.object({ gte: z.union([z.string(), z.number().finite()]) }).strict(),
|
|
55
|
+
z.object({ lt: z.union([z.string(), z.number().finite()]) }).strict(),
|
|
56
|
+
z.object({ lte: z.union([z.string(), z.number().finite()]) }).strict(),
|
|
57
|
+
z.object({
|
|
58
|
+
in: z.array(SubscriptionFilterPrimitiveSchema).min(1)
|
|
59
|
+
}).strict()
|
|
60
|
+
]);
|
|
61
|
+
var SubscriptionFilterClauseSchema = z.union([
|
|
62
|
+
SubscriptionFilterPrimitiveSchema,
|
|
63
|
+
SubscriptionFilterOperatorSchema
|
|
64
|
+
]);
|
|
65
|
+
var SubscriptionFilterSchema = z.record(z.string().min(1), SubscriptionFilterClauseSchema);
|
|
66
|
+
var CreateSubscriptionRequestSchema = z.object({
|
|
67
|
+
name,
|
|
68
|
+
subgraphName: resourceName,
|
|
69
|
+
tableName: resourceName,
|
|
70
|
+
url: webhookUrl,
|
|
71
|
+
filter: SubscriptionFilterSchema.optional(),
|
|
72
|
+
format: SubscriptionFormatSchema.default("standard-webhooks"),
|
|
73
|
+
runtime: SubscriptionRuntimeSchema.nullable().optional(),
|
|
74
|
+
authConfig: z.record(z.string(), z.unknown()).optional(),
|
|
75
|
+
maxRetries: z.number().int().min(0).max(100).optional(),
|
|
76
|
+
timeoutMs: z.number().int().min(100).max(300000).optional(),
|
|
77
|
+
concurrency: z.number().int().min(1).max(100).optional()
|
|
78
|
+
});
|
|
79
|
+
var UpdateSubscriptionRequestSchema = z.object({
|
|
80
|
+
name: name.optional(),
|
|
81
|
+
url: webhookUrl.optional(),
|
|
82
|
+
filter: SubscriptionFilterSchema.optional(),
|
|
83
|
+
format: SubscriptionFormatSchema.optional(),
|
|
84
|
+
runtime: SubscriptionRuntimeSchema.nullable().optional(),
|
|
85
|
+
authConfig: z.record(z.string(), z.unknown()).optional(),
|
|
86
|
+
maxRetries: z.number().int().min(0).max(100).optional(),
|
|
87
|
+
timeoutMs: z.number().int().min(100).max(300000).optional(),
|
|
88
|
+
concurrency: z.number().int().min(1).max(100).optional()
|
|
89
|
+
}).refine((value) => Object.keys(value).length > 0, {
|
|
90
|
+
message: "At least one field must be provided"
|
|
91
|
+
});
|
|
92
|
+
var ReplaySubscriptionRequestSchema = z.object({
|
|
93
|
+
fromBlock: z.number().int().nonnegative(),
|
|
94
|
+
toBlock: z.number().int().nonnegative(),
|
|
95
|
+
force: z.string().trim().min(1).max(64).optional()
|
|
96
|
+
}).refine((value) => value.fromBlock <= value.toBlock, {
|
|
97
|
+
message: "fromBlock must be less than or equal to toBlock",
|
|
98
|
+
path: ["toBlock"]
|
|
99
|
+
});
|
|
100
|
+
var SCALAR_COLUMN_TYPES = new Set([
|
|
101
|
+
"text",
|
|
102
|
+
"uint",
|
|
103
|
+
"int",
|
|
104
|
+
"principal",
|
|
105
|
+
"boolean",
|
|
106
|
+
"timestamp"
|
|
107
|
+
]);
|
|
108
|
+
var COMPARISON_COLUMN_TYPES = new Set(["uint", "int", "timestamp"]);
|
|
109
|
+
function formatIssuePath(path) {
|
|
110
|
+
return path.length > 0 ? `${path.map(String).join(".")}: ` : "";
|
|
111
|
+
}
|
|
112
|
+
function formatSubscriptionSchemaErrors(error) {
|
|
113
|
+
return error.issues.map((issue) => `${formatIssuePath(issue.path)}${issue.message}`);
|
|
114
|
+
}
|
|
115
|
+
function operatorForClause(clause) {
|
|
116
|
+
if (clause === null || typeof clause !== "object" || Array.isArray(clause)) {
|
|
117
|
+
return "eq";
|
|
118
|
+
}
|
|
119
|
+
return Object.keys(clause)[0] ?? "eq";
|
|
120
|
+
}
|
|
121
|
+
function validateSubscriptionFilterForTable(input) {
|
|
122
|
+
const errors = [];
|
|
123
|
+
const table = input.tables[input.tableName];
|
|
124
|
+
if (!table) {
|
|
125
|
+
const names = Object.keys(input.tables);
|
|
126
|
+
errors.push(`Unknown table "${input.tableName}"${input.subgraphName ? ` in subgraph "${input.subgraphName}"` : ""}.${names.length > 0 ? ` Available tables: ${names.join(", ")}.` : ""}`);
|
|
127
|
+
return errors;
|
|
128
|
+
}
|
|
129
|
+
if (input.filter === undefined)
|
|
130
|
+
return errors;
|
|
131
|
+
const parsed = SubscriptionFilterSchema.safeParse(input.filter);
|
|
132
|
+
if (!parsed.success) {
|
|
133
|
+
return formatSubscriptionSchemaErrors(parsed.error);
|
|
134
|
+
}
|
|
135
|
+
for (const [field, clause] of Object.entries(parsed.data)) {
|
|
136
|
+
const column = table.columns[field];
|
|
137
|
+
if (!column) {
|
|
138
|
+
errors.push(`Unknown filter field "${field}" on table "${input.tableName}".`);
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
const columnType = typeof column.type === "string" ? column.type.toLowerCase() : "";
|
|
142
|
+
if (!SCALAR_COLUMN_TYPES.has(columnType)) {
|
|
143
|
+
errors.push(`Filter field "${field}" has unsupported type "${columnType || "unknown"}"; subscription filters require scalar columns.`);
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
const operator = operatorForClause(clause);
|
|
147
|
+
if ((operator === "gt" || operator === "gte" || operator === "lt" || operator === "lte") && !COMPARISON_COLUMN_TYPES.has(columnType)) {
|
|
148
|
+
errors.push(`Operator "${operator}" is not supported for ${columnType} field "${field}".`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return errors;
|
|
152
|
+
}
|
|
153
|
+
export {
|
|
154
|
+
validateSubscriptionFilterForTable,
|
|
155
|
+
formatSubscriptionSchemaErrors,
|
|
156
|
+
UpdateSubscriptionRequestSchema,
|
|
157
|
+
SubscriptionStatusSchema,
|
|
158
|
+
SubscriptionRuntimeSchema,
|
|
159
|
+
SubscriptionFormatSchema,
|
|
160
|
+
SubscriptionFilterSchema,
|
|
161
|
+
SubscriptionFilterPrimitiveSchema,
|
|
162
|
+
SubscriptionFilterOperatorSchema,
|
|
163
|
+
SubscriptionFilterClauseSchema,
|
|
164
|
+
SUBSCRIPTION_STATUSES,
|
|
165
|
+
SUBSCRIPTION_RUNTIMES,
|
|
166
|
+
SUBSCRIPTION_FORMATS,
|
|
167
|
+
SUBSCRIPTION_FILTER_OPERATORS,
|
|
168
|
+
ReplaySubscriptionRequestSchema,
|
|
169
|
+
CreateSubscriptionRequestSchema
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
//# debugId=84EF344A554D3EB364756E2164756E21
|
|
173
|
+
//# sourceMappingURL=subscriptions.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/schemas/subscriptions.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import { z } from \"zod/v4\";\n\nexport const SUBSCRIPTION_FORMATS = [\n\t\"standard-webhooks\",\n\t\"inngest\",\n\t\"trigger\",\n\t\"cloudflare\",\n\t\"cloudevents\",\n\t\"raw\",\n] as const;\n\nexport const SUBSCRIPTION_RUNTIMES = [\n\t\"inngest\",\n\t\"trigger\",\n\t\"cloudflare\",\n\t\"node\",\n] as const;\n\nexport const SUBSCRIPTION_STATUSES = [\"active\", \"paused\", \"error\"] as const;\n\nexport const SUBSCRIPTION_FILTER_OPERATORS = [\n\t\"eq\",\n\t\"neq\",\n\t\"gt\",\n\t\"gte\",\n\t\"lt\",\n\t\"lte\",\n\t\"in\",\n] as const;\n\nconst webhookUrl = z\n\t.string()\n\t.trim()\n\t.min(1)\n\t.refine(\n\t\t(value) => value.startsWith(\"http://\") || value.startsWith(\"https://\"),\n\t\t\"must be an http(s) URL\",\n\t);\n\nconst name = z.string().trim().min(1).max(128);\nconst resourceName = z.string().trim().min(1).max(128);\n\nexport const SubscriptionStatusSchema: z.ZodType<SubscriptionStatus> = z.enum(\n\tSUBSCRIPTION_STATUSES,\n);\nexport const SubscriptionFormatSchema: z.ZodType<SubscriptionFormat> =\n\tz.enum(SUBSCRIPTION_FORMATS);\nexport const SubscriptionRuntimeSchema: z.ZodType<SubscriptionRuntime> = z.enum(\n\tSUBSCRIPTION_RUNTIMES,\n);\n\nexport const SubscriptionFilterPrimitiveSchema: z.ZodType<SubscriptionFilterPrimitive> =\n\tz.union([z.string(), z.number().finite(), z.boolean()]);\n\nexport const SubscriptionFilterOperatorSchema: z.ZodType<SubscriptionFilterOperator> =\n\tz.union([\n\t\tz.object({ eq: SubscriptionFilterPrimitiveSchema }).strict(),\n\t\tz.object({ neq: SubscriptionFilterPrimitiveSchema }).strict(),\n\t\tz.object({ gt: z.union([z.string(), z.number().finite()]) }).strict(),\n\t\tz.object({ gte: z.union([z.string(), z.number().finite()]) }).strict(),\n\t\tz.object({ lt: z.union([z.string(), z.number().finite()]) }).strict(),\n\t\tz.object({ lte: z.union([z.string(), z.number().finite()]) }).strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\tin: z.array(SubscriptionFilterPrimitiveSchema).min(1),\n\t\t\t})\n\t\t\t.strict(),\n\t]);\n\nexport const SubscriptionFilterClauseSchema: z.ZodType<SubscriptionFilterClause> =\n\tz.union([\n\t\tSubscriptionFilterPrimitiveSchema,\n\t\tSubscriptionFilterOperatorSchema,\n\t]);\n\nexport const SubscriptionFilterSchema: z.ZodType<SubscriptionFilter> = z.record(\n\tz.string().min(1),\n\tSubscriptionFilterClauseSchema,\n);\n\nexport const CreateSubscriptionRequestSchema: z.ZodType<ParsedCreateSubscriptionRequest> =\n\tz.object({\n\t\tname,\n\t\tsubgraphName: resourceName,\n\t\ttableName: resourceName,\n\t\turl: webhookUrl,\n\t\tfilter: SubscriptionFilterSchema.optional(),\n\t\tformat: SubscriptionFormatSchema.default(\"standard-webhooks\"),\n\t\truntime: SubscriptionRuntimeSchema.nullable().optional(),\n\t\tauthConfig: z.record(z.string(), z.unknown()).optional(),\n\t\tmaxRetries: z.number().int().min(0).max(100).optional(),\n\t\ttimeoutMs: z.number().int().min(100).max(300_000).optional(),\n\t\tconcurrency: z.number().int().min(1).max(100).optional(),\n\t});\n\nexport const UpdateSubscriptionRequestSchema: z.ZodType<UpdateSubscriptionRequest> =\n\tz\n\t\t.object({\n\t\t\tname: name.optional(),\n\t\t\turl: webhookUrl.optional(),\n\t\t\tfilter: SubscriptionFilterSchema.optional(),\n\t\t\tformat: SubscriptionFormatSchema.optional(),\n\t\t\truntime: SubscriptionRuntimeSchema.nullable().optional(),\n\t\t\tauthConfig: z.record(z.string(), z.unknown()).optional(),\n\t\t\tmaxRetries: z.number().int().min(0).max(100).optional(),\n\t\t\ttimeoutMs: z.number().int().min(100).max(300_000).optional(),\n\t\t\tconcurrency: z.number().int().min(1).max(100).optional(),\n\t\t})\n\t\t.refine((value) => Object.keys(value).length > 0, {\n\t\t\tmessage: \"At least one field must be provided\",\n\t\t});\n\nexport const ReplaySubscriptionRequestSchema: z.ZodType<ReplaySubscriptionRequest> =\n\tz\n\t\t.object({\n\t\t\tfromBlock: z.number().int().nonnegative(),\n\t\t\ttoBlock: z.number().int().nonnegative(),\n\t\t\tforce: z.string().trim().min(1).max(64).optional(),\n\t\t})\n\t\t.refine((value) => value.fromBlock <= value.toBlock, {\n\t\t\tmessage: \"fromBlock must be less than or equal to toBlock\",\n\t\t\tpath: [\"toBlock\"],\n\t\t});\n\nexport type SubscriptionStatus = (typeof SUBSCRIPTION_STATUSES)[number];\nexport type SubscriptionFormat = (typeof SUBSCRIPTION_FORMATS)[number];\nexport type SubscriptionRuntime = (typeof SUBSCRIPTION_RUNTIMES)[number];\nexport type SubscriptionFilterPrimitive = string | number | boolean;\nexport type SubscriptionFilterOperator =\n\t| { eq: SubscriptionFilterPrimitive }\n\t| { neq: SubscriptionFilterPrimitive }\n\t| { gt: string | number }\n\t| { gte: string | number }\n\t| { lt: string | number }\n\t| { lte: string | number }\n\t| { in: SubscriptionFilterPrimitive[] };\nexport type SubscriptionFilterClause =\n\t| SubscriptionFilterPrimitive\n\t| SubscriptionFilterOperator;\nexport type SubscriptionFilter = Record<string, SubscriptionFilterClause>;\n\nexport interface CreateSubscriptionRequest {\n\tname: string;\n\tsubgraphName: string;\n\ttableName: string;\n\turl: string;\n\tfilter?: SubscriptionFilter;\n\tformat?: SubscriptionFormat;\n\truntime?: SubscriptionRuntime | null;\n\tauthConfig?: Record<string, unknown>;\n\tmaxRetries?: number;\n\ttimeoutMs?: number;\n\tconcurrency?: number;\n}\n\nexport interface ParsedCreateSubscriptionRequest\n\textends Omit<CreateSubscriptionRequest, \"format\"> {\n\tformat: SubscriptionFormat;\n}\n\nexport interface UpdateSubscriptionRequest {\n\tname?: string;\n\turl?: string;\n\tfilter?: SubscriptionFilter;\n\tformat?: SubscriptionFormat;\n\truntime?: SubscriptionRuntime | null;\n\tauthConfig?: Record<string, unknown>;\n\tmaxRetries?: number;\n\ttimeoutMs?: number;\n\tconcurrency?: number;\n}\n\nexport type ParsedUpdateSubscriptionRequest = UpdateSubscriptionRequest;\n\nexport interface ReplaySubscriptionRequest {\n\tfromBlock: number;\n\ttoBlock: number;\n\tforce?: string;\n}\n\nexport type ParsedReplaySubscriptionRequest = ReplaySubscriptionRequest;\n\nexport interface SubscriptionSummary {\n\tid: string;\n\tname: string;\n\tstatus: SubscriptionStatus;\n\tsubgraphName: string;\n\ttableName: string;\n\tformat: SubscriptionFormat;\n\truntime: SubscriptionRuntime | null;\n\turl: string;\n\tlastDeliveryAt: string | null;\n\tlastSuccessAt: string | null;\n\tcreatedAt: string;\n\tupdatedAt: string;\n}\n\nexport interface SubscriptionDetail extends SubscriptionSummary {\n\tfilter: Record<string, unknown>;\n\tauthConfig: Record<string, unknown>;\n\tmaxRetries: number;\n\ttimeoutMs: number;\n\tconcurrency: number;\n\tcircuitFailures: number;\n\tcircuitOpenedAt: string | null;\n\tlastError: string | null;\n}\n\nexport interface CreateSubscriptionResponse {\n\tsubscription: SubscriptionDetail;\n\t/** Plaintext signing secret — surfaced ONCE. Store it server-side. */\n\tsigningSecret: string;\n}\n\nexport interface RotateSecretResponse {\n\tsubscription: SubscriptionDetail;\n\tsigningSecret: string;\n}\n\nexport interface DeliveryRow {\n\tid: string;\n\tattempt: number;\n\tstatusCode: number | null;\n\terrorMessage: string | null;\n\tdurationMs: number | null;\n\tresponseBody: string | null;\n\tdispatchedAt: string;\n}\n\nexport interface ReplayResult {\n\treplayId: string;\n\tenqueuedCount: number;\n\tscannedCount: number;\n}\n\nexport interface DeadRow {\n\tid: string;\n\teventType: string;\n\tattempt: number;\n\tblockHeight: number;\n\ttxId: string | null;\n\tpayload: Record<string, unknown>;\n\tfailedAt: string | null;\n\tcreatedAt: string;\n}\n\nexport interface SubscriptionSchemaColumn {\n\ttype?: unknown;\n}\n\nexport interface SubscriptionSchemaTable {\n\tcolumns: Record<string, SubscriptionSchemaColumn>;\n}\n\nexport type SubscriptionSchemaTables = Record<string, SubscriptionSchemaTable>;\n\nconst SCALAR_COLUMN_TYPES = new Set([\n\t\"text\",\n\t\"uint\",\n\t\"int\",\n\t\"principal\",\n\t\"boolean\",\n\t\"timestamp\",\n]);\n\nconst COMPARISON_COLUMN_TYPES = new Set([\"uint\", \"int\", \"timestamp\"]);\n\nfunction formatIssuePath(path: PropertyKey[]): string {\n\treturn path.length > 0 ? `${path.map(String).join(\".\")}: ` : \"\";\n}\n\nexport function formatSubscriptionSchemaErrors(error: z.ZodError): string[] {\n\treturn error.issues.map(\n\t\t(issue) => `${formatIssuePath(issue.path)}${issue.message}`,\n\t);\n}\n\nfunction operatorForClause(clause: SubscriptionFilterClause): string {\n\tif (clause === null || typeof clause !== \"object\" || Array.isArray(clause)) {\n\t\treturn \"eq\";\n\t}\n\treturn Object.keys(clause)[0] ?? \"eq\";\n}\n\nexport function validateSubscriptionFilterForTable(input: {\n\tsubgraphName?: string;\n\ttableName: string;\n\tfilter?: unknown;\n\ttables: SubscriptionSchemaTables;\n}): string[] {\n\tconst errors: string[] = [];\n\tconst table = input.tables[input.tableName];\n\tif (!table) {\n\t\tconst names = Object.keys(input.tables);\n\t\terrors.push(\n\t\t\t`Unknown table \"${input.tableName}\"${\n\t\t\t\tinput.subgraphName ? ` in subgraph \"${input.subgraphName}\"` : \"\"\n\t\t\t}.${names.length > 0 ? ` Available tables: ${names.join(\", \")}.` : \"\"}`,\n\t\t);\n\t\treturn errors;\n\t}\n\n\tif (input.filter === undefined) return errors;\n\n\tconst parsed = SubscriptionFilterSchema.safeParse(input.filter);\n\tif (!parsed.success) {\n\t\treturn formatSubscriptionSchemaErrors(parsed.error);\n\t}\n\n\tfor (const [field, clause] of Object.entries(parsed.data)) {\n\t\tconst column = table.columns[field];\n\t\tif (!column) {\n\t\t\terrors.push(\n\t\t\t\t`Unknown filter field \"${field}\" on table \"${input.tableName}\".`,\n\t\t\t);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst columnType =\n\t\t\ttypeof column.type === \"string\" ? column.type.toLowerCase() : \"\";\n\t\tif (!SCALAR_COLUMN_TYPES.has(columnType)) {\n\t\t\terrors.push(\n\t\t\t\t`Filter field \"${field}\" has unsupported type \"${columnType || \"unknown\"}\"; subscription filters require scalar columns.`,\n\t\t\t);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst operator = operatorForClause(clause);\n\t\tif (\n\t\t\t(operator === \"gt\" ||\n\t\t\t\toperator === \"gte\" ||\n\t\t\t\toperator === \"lt\" ||\n\t\t\t\toperator === \"lte\") &&\n\t\t\t!COMPARISON_COLUMN_TYPES.has(columnType)\n\t\t) {\n\t\t\terrors.push(\n\t\t\t\t`Operator \"${operator}\" is not supported for ${columnType} field \"${field}\".`,\n\t\t\t);\n\t\t}\n\t}\n\n\treturn errors;\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "84EF344A554D3EB364756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@secondlayer/shared",
|
|
3
|
-
"version": "4.0
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -57,6 +57,10 @@
|
|
|
57
57
|
"types": "./dist/src/schemas/subgraphs.d.ts",
|
|
58
58
|
"import": "./dist/src/schemas/subgraphs.js"
|
|
59
59
|
},
|
|
60
|
+
"./schemas/subscriptions": {
|
|
61
|
+
"types": "./dist/src/schemas/subscriptions.d.ts",
|
|
62
|
+
"import": "./dist/src/schemas/subscriptions.js"
|
|
63
|
+
},
|
|
60
64
|
"./schemas/accounts": {
|
|
61
65
|
"types": "./dist/src/schemas/accounts.d.ts",
|
|
62
66
|
"import": "./dist/src/schemas/accounts.js"
|