@uns-kit/database 2.0.46
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 +91 -0
- package/dist/client.d.ts +19 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +120 -0
- package/dist/client.js.map +1 -0
- package/dist/drivers/oracle.d.ts +4 -0
- package/dist/drivers/oracle.d.ts.map +1 -0
- package/dist/drivers/oracle.js +96 -0
- package/dist/drivers/oracle.js.map +1 -0
- package/dist/drivers/pg.d.ts +4 -0
- package/dist/drivers/pg.d.ts.map +1 -0
- package/dist/drivers/pg.js +84 -0
- package/dist/drivers/pg.js.map +1 -0
- package/dist/drivers/sqlite.d.ts +4 -0
- package/dist/drivers/sqlite.d.ts.map +1 -0
- package/dist/drivers/sqlite.js +38 -0
- package/dist/drivers/sqlite.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/params.d.ts +4 -0
- package/dist/params.d.ts.map +1 -0
- package/dist/params.js +193 -0
- package/dist/params.js.map +1 -0
- package/dist/placeholders.d.ts +168 -0
- package/dist/placeholders.d.ts.map +1 -0
- package/dist/placeholders.js +51 -0
- package/dist/placeholders.js.map +1 -0
- package/dist/schema.d.ts +2208 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +81 -0
- package/dist/schema.js.map +1 -0
- package/dist/sql-modes.d.ts +3 -0
- package/dist/sql-modes.d.ts.map +1 -0
- package/dist/sql-modes.js +10 -0
- package/dist/sql-modes.js.map +1 -0
- package/dist/sql.d.ts +6 -0
- package/dist/sql.d.ts.map +1 -0
- package/dist/sql.js +14 -0
- package/dist/sql.js.map +1 -0
- package/dist/types.d.ts +31 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +58 -0
package/dist/params.js
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
export const ORACLE_IN_LIST_LIMIT = 1000;
|
|
2
|
+
const isIdentifierStart = (char) => !!char && /[A-Za-z_]/.test(char);
|
|
3
|
+
const isIdentifierPart = (char) => !!char && /[A-Za-z0-9_]/.test(char);
|
|
4
|
+
function readParameterName(sqlText, startIndex) {
|
|
5
|
+
let index = startIndex;
|
|
6
|
+
let name = "";
|
|
7
|
+
while (index < sqlText.length && isIdentifierPart(sqlText[index])) {
|
|
8
|
+
name += sqlText[index];
|
|
9
|
+
index += 1;
|
|
10
|
+
}
|
|
11
|
+
return { name, endIndex: index - 1 };
|
|
12
|
+
}
|
|
13
|
+
export function compileNamedParams(dialect, sqlText, params = {}) {
|
|
14
|
+
const output = [];
|
|
15
|
+
const values = [];
|
|
16
|
+
const bindValues = {};
|
|
17
|
+
const parameterOrder = [];
|
|
18
|
+
const pgIndexes = new Map();
|
|
19
|
+
let inSingleQuote = false;
|
|
20
|
+
let inDoubleQuote = false;
|
|
21
|
+
let inLineComment = false;
|
|
22
|
+
let inBlockComment = false;
|
|
23
|
+
for (let index = 0; index < sqlText.length; index += 1) {
|
|
24
|
+
const char = sqlText[index];
|
|
25
|
+
const next = sqlText[index + 1];
|
|
26
|
+
const previous = sqlText[index - 1];
|
|
27
|
+
if (inLineComment) {
|
|
28
|
+
output.push(char);
|
|
29
|
+
if (char === "\n") {
|
|
30
|
+
inLineComment = false;
|
|
31
|
+
}
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
if (inBlockComment) {
|
|
35
|
+
output.push(char);
|
|
36
|
+
if (char === "*" && next === "/") {
|
|
37
|
+
output.push(next);
|
|
38
|
+
inBlockComment = false;
|
|
39
|
+
index += 1;
|
|
40
|
+
}
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (!inDoubleQuote && char === "'" && previous !== "\\") {
|
|
44
|
+
inSingleQuote = !inSingleQuote;
|
|
45
|
+
output.push(char);
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (!inSingleQuote && char === "\"" && previous !== "\\") {
|
|
49
|
+
inDoubleQuote = !inDoubleQuote;
|
|
50
|
+
output.push(char);
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (inSingleQuote || inDoubleQuote) {
|
|
54
|
+
output.push(char);
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (char === "-" && next === "-") {
|
|
58
|
+
output.push(char, next);
|
|
59
|
+
inLineComment = true;
|
|
60
|
+
index += 1;
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (char === "/" && next === "*") {
|
|
64
|
+
output.push(char, next);
|
|
65
|
+
inBlockComment = true;
|
|
66
|
+
index += 1;
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
if (char === ":" && previous !== ":" && isIdentifierStart(next)) {
|
|
70
|
+
const { name, endIndex } = readParameterName(sqlText, index + 1);
|
|
71
|
+
if (!(name in params)) {
|
|
72
|
+
throw new Error(`Missing SQL parameter ':${name}'.`);
|
|
73
|
+
}
|
|
74
|
+
const value = params[name];
|
|
75
|
+
if (Array.isArray(value)) {
|
|
76
|
+
const inListContext = dialect === "oracle"
|
|
77
|
+
? getInListContext(output, sqlText, endIndex + 1)
|
|
78
|
+
: null;
|
|
79
|
+
if (value.length === 0) {
|
|
80
|
+
if (inListContext) {
|
|
81
|
+
output.splice(inListContext.startIndex);
|
|
82
|
+
output.push("1 = 0");
|
|
83
|
+
index = inListContext.closingParenIndex;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
output.push("(select 1 where 1 = 0)");
|
|
87
|
+
index = endIndex;
|
|
88
|
+
}
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
const placeholders = buildArrayPlaceholders(dialect, name, value, values, bindValues, parameterOrder, inListContext?.leftSideExpression);
|
|
92
|
+
if (inListContext) {
|
|
93
|
+
output.splice(inListContext.startIndex);
|
|
94
|
+
}
|
|
95
|
+
output.push(placeholders);
|
|
96
|
+
if (inListContext) {
|
|
97
|
+
index = inListContext.closingParenIndex;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
index = endIndex;
|
|
101
|
+
}
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
parameterOrder.push(name);
|
|
105
|
+
if (dialect === "oracle") {
|
|
106
|
+
bindValues[name] = value;
|
|
107
|
+
output.push(`:${name}`);
|
|
108
|
+
}
|
|
109
|
+
else if (dialect === "pg") {
|
|
110
|
+
let paramIndex = pgIndexes.get(name);
|
|
111
|
+
if (!paramIndex) {
|
|
112
|
+
values.push(value);
|
|
113
|
+
paramIndex = values.length;
|
|
114
|
+
pgIndexes.set(name, paramIndex);
|
|
115
|
+
}
|
|
116
|
+
output.push(`$${paramIndex}`);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
values.push(value);
|
|
120
|
+
output.push("?");
|
|
121
|
+
}
|
|
122
|
+
index = endIndex;
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
output.push(char);
|
|
126
|
+
}
|
|
127
|
+
return {
|
|
128
|
+
text: output.join(""),
|
|
129
|
+
values: dialect === "oracle" ? bindValues : values,
|
|
130
|
+
parameterOrder,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
function buildArrayPlaceholders(dialect, name, arrayValue, values, bindValues, parameterOrder, leftSideExpression) {
|
|
134
|
+
if (dialect === "oracle") {
|
|
135
|
+
const chunks = chunkArray(arrayValue, ORACLE_IN_LIST_LIMIT);
|
|
136
|
+
const inColumn = leftSideExpression?.trim();
|
|
137
|
+
const chunkSql = chunks.map((chunk, chunkIndex) => {
|
|
138
|
+
const placeholders = chunk.map((item, itemIndex) => {
|
|
139
|
+
const bindName = `${name}_${chunkIndex}_${itemIndex}`;
|
|
140
|
+
bindValues[bindName] = item;
|
|
141
|
+
parameterOrder.push(bindName);
|
|
142
|
+
return `:${bindName}`;
|
|
143
|
+
});
|
|
144
|
+
return inColumn
|
|
145
|
+
? `${inColumn} IN (${placeholders.join(", ")})`
|
|
146
|
+
: placeholders.join(", ");
|
|
147
|
+
});
|
|
148
|
+
return inColumn
|
|
149
|
+
? `(${chunkSql.join(" OR ")})`
|
|
150
|
+
: chunkSql.join(", ");
|
|
151
|
+
}
|
|
152
|
+
if (dialect === "pg") {
|
|
153
|
+
const placeholders = arrayValue.map(item => {
|
|
154
|
+
values.push(item);
|
|
155
|
+
parameterOrder.push(name);
|
|
156
|
+
return `$${values.length}`;
|
|
157
|
+
});
|
|
158
|
+
return placeholders.join(", ");
|
|
159
|
+
}
|
|
160
|
+
const placeholders = arrayValue.map(item => {
|
|
161
|
+
values.push(item);
|
|
162
|
+
parameterOrder.push(name);
|
|
163
|
+
return "?";
|
|
164
|
+
});
|
|
165
|
+
return placeholders.join(", ");
|
|
166
|
+
}
|
|
167
|
+
function chunkArray(values, size) {
|
|
168
|
+
const chunks = [];
|
|
169
|
+
for (let index = 0; index < values.length; index += size) {
|
|
170
|
+
chunks.push(values.slice(index, index + size));
|
|
171
|
+
}
|
|
172
|
+
return chunks;
|
|
173
|
+
}
|
|
174
|
+
function getInListContext(output, sqlText, searchStartIndex) {
|
|
175
|
+
const outputText = output.join("");
|
|
176
|
+
const match = /([A-Za-z0-9_."$]+)\s+IN\s*\($/i.exec(outputText);
|
|
177
|
+
if (!match) {
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
let cursor = searchStartIndex;
|
|
181
|
+
while (cursor < sqlText.length && /\s/.test(sqlText[cursor])) {
|
|
182
|
+
cursor += 1;
|
|
183
|
+
}
|
|
184
|
+
if (sqlText[cursor] !== ")") {
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
return {
|
|
188
|
+
startIndex: match.index,
|
|
189
|
+
leftSideExpression: match[1],
|
|
190
|
+
closingParenIndex: cursor,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=params.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"params.js","sourceRoot":"","sources":["../src/params.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n CompiledSqlStatement,\n DatabaseDialect,\n SqlParams,\n} from \"./types.js\";\n\nexport const ORACLE_IN_LIST_LIMIT = 1000;\n\nconst isIdentifierStart = (char: string | undefined): boolean =>\n !!char && /[A-Za-z_]/.test(char);\n\nconst isIdentifierPart = (char: string | undefined): boolean =>\n !!char && /[A-Za-z0-9_]/.test(char);\n\nfunction readParameterName(sqlText: string, startIndex: number): { name: string; endIndex: number } {\n let index = startIndex;\n let name = \"\";\n\n while (index < sqlText.length && isIdentifierPart(sqlText[index])) {\n name += sqlText[index];\n index += 1;\n }\n\n return { name, endIndex: index - 1 };\n}\n\nexport function compileNamedParams(\n dialect: DatabaseDialect,\n sqlText: string,\n params: SqlParams = {}\n): CompiledSqlStatement {\n const output: string[] = [];\n const values: unknown[] = [];\n const bindValues: Record<string, unknown> = {};\n const parameterOrder: string[] = [];\n const pgIndexes = new Map<string, number>();\n\n let inSingleQuote = false;\n let inDoubleQuote = false;\n let inLineComment = false;\n let inBlockComment = false;\n\n for (let index = 0; index < sqlText.length; index += 1) {\n const char = sqlText[index];\n const next = sqlText[index + 1];\n const previous = sqlText[index - 1];\n\n if (inLineComment) {\n output.push(char);\n if (char === \"\\n\") {\n inLineComment = false;\n }\n continue;\n }\n\n if (inBlockComment) {\n output.push(char);\n if (char === \"*\" && next === \"/\") {\n output.push(next);\n inBlockComment = false;\n index += 1;\n }\n continue;\n }\n\n if (!inDoubleQuote && char === \"'\" && previous !== \"\\\\\") {\n inSingleQuote = !inSingleQuote;\n output.push(char);\n continue;\n }\n\n if (!inSingleQuote && char === \"\\\"\" && previous !== \"\\\\\") {\n inDoubleQuote = !inDoubleQuote;\n output.push(char);\n continue;\n }\n\n if (inSingleQuote || inDoubleQuote) {\n output.push(char);\n continue;\n }\n\n if (char === \"-\" && next === \"-\") {\n output.push(char, next);\n inLineComment = true;\n index += 1;\n continue;\n }\n\n if (char === \"/\" && next === \"*\") {\n output.push(char, next);\n inBlockComment = true;\n index += 1;\n continue;\n }\n\n if (char === \":\" && previous !== \":\" && isIdentifierStart(next)) {\n const { name, endIndex } = readParameterName(sqlText, index + 1);\n\n if (!(name in params)) {\n throw new Error(`Missing SQL parameter ':${name}'.`);\n }\n\n const value = params[name];\n\n if (Array.isArray(value)) {\n const inListContext = dialect === \"oracle\"\n ? getInListContext(output, sqlText, endIndex + 1)\n : null;\n\n if (value.length === 0) {\n if (inListContext) {\n output.splice(inListContext.startIndex);\n output.push(\"1 = 0\");\n index = inListContext.closingParenIndex;\n } else {\n output.push(\"(select 1 where 1 = 0)\");\n index = endIndex;\n }\n continue;\n }\n\n const placeholders = buildArrayPlaceholders(\n dialect,\n name,\n value,\n values,\n bindValues,\n parameterOrder,\n inListContext?.leftSideExpression\n );\n\n if (inListContext) {\n output.splice(inListContext.startIndex);\n }\n\n output.push(placeholders);\n if (inListContext) {\n index = inListContext.closingParenIndex;\n } else {\n index = endIndex;\n }\n continue;\n }\n\n parameterOrder.push(name);\n\n if (dialect === \"oracle\") {\n bindValues[name] = value;\n output.push(`:${name}`);\n } else if (dialect === \"pg\") {\n let paramIndex = pgIndexes.get(name);\n if (!paramIndex) {\n values.push(value);\n paramIndex = values.length;\n pgIndexes.set(name, paramIndex);\n }\n output.push(`$${paramIndex}`);\n } else {\n values.push(value);\n output.push(\"?\");\n }\n\n index = endIndex;\n continue;\n }\n\n output.push(char);\n }\n\n return {\n text: output.join(\"\"),\n values: dialect === \"oracle\" ? bindValues : values,\n parameterOrder,\n };\n}\n\nfunction buildArrayPlaceholders(\n dialect: DatabaseDialect,\n name: string,\n arrayValue: unknown[],\n values: unknown[],\n bindValues: Record<string, unknown>,\n parameterOrder: string[],\n leftSideExpression?: string\n): string {\n if (dialect === \"oracle\") {\n const chunks = chunkArray(arrayValue, ORACLE_IN_LIST_LIMIT);\n const inColumn = leftSideExpression?.trim();\n\n const chunkSql = chunks.map((chunk, chunkIndex) => {\n const placeholders = chunk.map((item, itemIndex) => {\n const bindName = `${name}_${chunkIndex}_${itemIndex}`;\n bindValues[bindName] = item;\n parameterOrder.push(bindName);\n return `:${bindName}`;\n });\n\n return inColumn\n ? `${inColumn} IN (${placeholders.join(\", \")})`\n : placeholders.join(\", \");\n });\n\n return inColumn\n ? `(${chunkSql.join(\" OR \")})`\n : chunkSql.join(\", \");\n }\n\n if (dialect === \"pg\") {\n const placeholders = arrayValue.map(item => {\n values.push(item);\n parameterOrder.push(name);\n return `$${values.length}`;\n });\n return placeholders.join(\", \");\n }\n\n const placeholders = arrayValue.map(item => {\n values.push(item);\n parameterOrder.push(name);\n return \"?\";\n });\n return placeholders.join(\", \");\n}\n\nfunction chunkArray<T>(values: T[], size: number): T[][] {\n const chunks: T[][] = [];\n\n for (let index = 0; index < values.length; index += size) {\n chunks.push(values.slice(index, index + size));\n }\n\n return chunks;\n}\n\nfunction getInListContext(\n output: string[],\n sqlText: string,\n searchStartIndex: number\n): {\n startIndex: number;\n leftSideExpression: string;\n closingParenIndex: number;\n} | null {\n const outputText = output.join(\"\");\n const match = /([A-Za-z0-9_.\"$]+)\\s+IN\\s*\\($/i.exec(outputText);\n\n if (!match) {\n return null;\n }\n\n let cursor = searchStartIndex;\n while (cursor < sqlText.length && /\\s/.test(sqlText[cursor])) {\n cursor += 1;\n }\n\n if (sqlText[cursor] !== \")\") {\n return null;\n }\n\n return {\n startIndex: match.index,\n leftSideExpression: match[1],\n closingParenIndex: cursor,\n };\n}\n"]}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const secretPlaceholderSchema: z.ZodDiscriminatedUnion<"provider", [z.ZodObject<{
|
|
3
|
+
provider: z.ZodLiteral<"env">;
|
|
4
|
+
key: z.ZodString;
|
|
5
|
+
optional: z.ZodOptional<z.ZodBoolean>;
|
|
6
|
+
default: z.ZodOptional<z.ZodString>;
|
|
7
|
+
}, "strict", z.ZodTypeAny, {
|
|
8
|
+
provider?: "env";
|
|
9
|
+
key?: string;
|
|
10
|
+
optional?: boolean;
|
|
11
|
+
default?: string;
|
|
12
|
+
}, {
|
|
13
|
+
provider?: "env";
|
|
14
|
+
key?: string;
|
|
15
|
+
optional?: boolean;
|
|
16
|
+
default?: string;
|
|
17
|
+
}>, z.ZodObject<{
|
|
18
|
+
provider: z.ZodLiteral<"infisical">;
|
|
19
|
+
path: z.ZodString;
|
|
20
|
+
key: z.ZodString;
|
|
21
|
+
optional: z.ZodOptional<z.ZodBoolean>;
|
|
22
|
+
environment: z.ZodOptional<z.ZodString>;
|
|
23
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
24
|
+
default: z.ZodOptional<z.ZodString>;
|
|
25
|
+
}, "strict", z.ZodTypeAny, {
|
|
26
|
+
provider?: "infisical";
|
|
27
|
+
path?: string;
|
|
28
|
+
key?: string;
|
|
29
|
+
optional?: boolean;
|
|
30
|
+
default?: string;
|
|
31
|
+
environment?: string;
|
|
32
|
+
projectId?: string;
|
|
33
|
+
}, {
|
|
34
|
+
provider?: "infisical";
|
|
35
|
+
path?: string;
|
|
36
|
+
key?: string;
|
|
37
|
+
optional?: boolean;
|
|
38
|
+
default?: string;
|
|
39
|
+
environment?: string;
|
|
40
|
+
projectId?: string;
|
|
41
|
+
}>]>;
|
|
42
|
+
export declare const secretValueSchema: z.ZodUnion<[z.ZodString, z.ZodDiscriminatedUnion<"provider", [z.ZodObject<{
|
|
43
|
+
provider: z.ZodLiteral<"env">;
|
|
44
|
+
key: z.ZodString;
|
|
45
|
+
optional: z.ZodOptional<z.ZodBoolean>;
|
|
46
|
+
default: z.ZodOptional<z.ZodString>;
|
|
47
|
+
}, "strict", z.ZodTypeAny, {
|
|
48
|
+
provider?: "env";
|
|
49
|
+
key?: string;
|
|
50
|
+
optional?: boolean;
|
|
51
|
+
default?: string;
|
|
52
|
+
}, {
|
|
53
|
+
provider?: "env";
|
|
54
|
+
key?: string;
|
|
55
|
+
optional?: boolean;
|
|
56
|
+
default?: string;
|
|
57
|
+
}>, z.ZodObject<{
|
|
58
|
+
provider: z.ZodLiteral<"infisical">;
|
|
59
|
+
path: z.ZodString;
|
|
60
|
+
key: z.ZodString;
|
|
61
|
+
optional: z.ZodOptional<z.ZodBoolean>;
|
|
62
|
+
environment: z.ZodOptional<z.ZodString>;
|
|
63
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
64
|
+
default: z.ZodOptional<z.ZodString>;
|
|
65
|
+
}, "strict", z.ZodTypeAny, {
|
|
66
|
+
provider?: "infisical";
|
|
67
|
+
path?: string;
|
|
68
|
+
key?: string;
|
|
69
|
+
optional?: boolean;
|
|
70
|
+
default?: string;
|
|
71
|
+
environment?: string;
|
|
72
|
+
projectId?: string;
|
|
73
|
+
}, {
|
|
74
|
+
provider?: "infisical";
|
|
75
|
+
path?: string;
|
|
76
|
+
key?: string;
|
|
77
|
+
optional?: boolean;
|
|
78
|
+
default?: string;
|
|
79
|
+
environment?: string;
|
|
80
|
+
projectId?: string;
|
|
81
|
+
}>]>]>;
|
|
82
|
+
export declare const hostPlaceholderSchema: z.ZodDiscriminatedUnion<"provider", [z.ZodObject<{
|
|
83
|
+
provider: z.ZodLiteral<"inline">;
|
|
84
|
+
value: z.ZodString;
|
|
85
|
+
}, "strict", z.ZodTypeAny, {
|
|
86
|
+
provider?: "inline";
|
|
87
|
+
value?: string;
|
|
88
|
+
}, {
|
|
89
|
+
provider?: "inline";
|
|
90
|
+
value?: string;
|
|
91
|
+
}>, z.ZodObject<{
|
|
92
|
+
provider: z.ZodLiteral<"external">;
|
|
93
|
+
key: z.ZodString;
|
|
94
|
+
optional: z.ZodOptional<z.ZodBoolean>;
|
|
95
|
+
default: z.ZodOptional<z.ZodString>;
|
|
96
|
+
}, "strict", z.ZodTypeAny, {
|
|
97
|
+
provider?: "external";
|
|
98
|
+
key?: string;
|
|
99
|
+
optional?: boolean;
|
|
100
|
+
default?: string;
|
|
101
|
+
}, {
|
|
102
|
+
provider?: "external";
|
|
103
|
+
key?: string;
|
|
104
|
+
optional?: boolean;
|
|
105
|
+
default?: string;
|
|
106
|
+
}>, z.ZodObject<{
|
|
107
|
+
provider: z.ZodLiteral<"system">;
|
|
108
|
+
family: z.ZodDefault<z.ZodEnum<["IPv4", "IPv6"]>>;
|
|
109
|
+
interfaceName: z.ZodOptional<z.ZodString>;
|
|
110
|
+
optional: z.ZodOptional<z.ZodBoolean>;
|
|
111
|
+
default: z.ZodOptional<z.ZodString>;
|
|
112
|
+
}, "strict", z.ZodTypeAny, {
|
|
113
|
+
provider?: "system";
|
|
114
|
+
optional?: boolean;
|
|
115
|
+
default?: string;
|
|
116
|
+
family?: "IPv4" | "IPv6";
|
|
117
|
+
interfaceName?: string;
|
|
118
|
+
}, {
|
|
119
|
+
provider?: "system";
|
|
120
|
+
optional?: boolean;
|
|
121
|
+
default?: string;
|
|
122
|
+
family?: "IPv4" | "IPv6";
|
|
123
|
+
interfaceName?: string;
|
|
124
|
+
}>]>;
|
|
125
|
+
export declare const hostValueSchema: z.ZodUnion<[z.ZodString, z.ZodDiscriminatedUnion<"provider", [z.ZodObject<{
|
|
126
|
+
provider: z.ZodLiteral<"inline">;
|
|
127
|
+
value: z.ZodString;
|
|
128
|
+
}, "strict", z.ZodTypeAny, {
|
|
129
|
+
provider?: "inline";
|
|
130
|
+
value?: string;
|
|
131
|
+
}, {
|
|
132
|
+
provider?: "inline";
|
|
133
|
+
value?: string;
|
|
134
|
+
}>, z.ZodObject<{
|
|
135
|
+
provider: z.ZodLiteral<"external">;
|
|
136
|
+
key: z.ZodString;
|
|
137
|
+
optional: z.ZodOptional<z.ZodBoolean>;
|
|
138
|
+
default: z.ZodOptional<z.ZodString>;
|
|
139
|
+
}, "strict", z.ZodTypeAny, {
|
|
140
|
+
provider?: "external";
|
|
141
|
+
key?: string;
|
|
142
|
+
optional?: boolean;
|
|
143
|
+
default?: string;
|
|
144
|
+
}, {
|
|
145
|
+
provider?: "external";
|
|
146
|
+
key?: string;
|
|
147
|
+
optional?: boolean;
|
|
148
|
+
default?: string;
|
|
149
|
+
}>, z.ZodObject<{
|
|
150
|
+
provider: z.ZodLiteral<"system">;
|
|
151
|
+
family: z.ZodDefault<z.ZodEnum<["IPv4", "IPv6"]>>;
|
|
152
|
+
interfaceName: z.ZodOptional<z.ZodString>;
|
|
153
|
+
optional: z.ZodOptional<z.ZodBoolean>;
|
|
154
|
+
default: z.ZodOptional<z.ZodString>;
|
|
155
|
+
}, "strict", z.ZodTypeAny, {
|
|
156
|
+
provider?: "system";
|
|
157
|
+
optional?: boolean;
|
|
158
|
+
default?: string;
|
|
159
|
+
family?: "IPv4" | "IPv6";
|
|
160
|
+
interfaceName?: string;
|
|
161
|
+
}, {
|
|
162
|
+
provider?: "system";
|
|
163
|
+
optional?: boolean;
|
|
164
|
+
default?: string;
|
|
165
|
+
family?: "IPv4" | "IPv6";
|
|
166
|
+
interfaceName?: string;
|
|
167
|
+
}>]>]>;
|
|
168
|
+
//# sourceMappingURL=placeholders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placeholders.d.ts","sourceRoot":"","sources":["../src/placeholders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuCxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGlC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAG5B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIhC,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAG1B,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const envSecretSchema = z.object({
|
|
3
|
+
provider: z.literal("env"),
|
|
4
|
+
key: z.string().min(1),
|
|
5
|
+
optional: z.boolean().optional(),
|
|
6
|
+
default: z.string().optional(),
|
|
7
|
+
}).strict();
|
|
8
|
+
const infisicalSecretSchema = z.object({
|
|
9
|
+
provider: z.literal("infisical"),
|
|
10
|
+
path: z.string().min(1),
|
|
11
|
+
key: z.string().min(1),
|
|
12
|
+
optional: z.boolean().optional(),
|
|
13
|
+
environment: z.string().optional(),
|
|
14
|
+
projectId: z.string().optional(),
|
|
15
|
+
default: z.string().optional(),
|
|
16
|
+
}).strict();
|
|
17
|
+
const inlineHostSchema = z.object({
|
|
18
|
+
provider: z.literal("inline"),
|
|
19
|
+
value: z.string().min(1),
|
|
20
|
+
}).strict();
|
|
21
|
+
const externalHostSchema = z.object({
|
|
22
|
+
provider: z.literal("external"),
|
|
23
|
+
key: z.string().min(1),
|
|
24
|
+
optional: z.boolean().optional(),
|
|
25
|
+
default: z.string().optional(),
|
|
26
|
+
}).strict();
|
|
27
|
+
const systemHostSchema = z.object({
|
|
28
|
+
provider: z.literal("system"),
|
|
29
|
+
family: z.enum(["IPv4", "IPv6"]).default("IPv4"),
|
|
30
|
+
interfaceName: z.string().optional(),
|
|
31
|
+
optional: z.boolean().optional(),
|
|
32
|
+
default: z.string().optional(),
|
|
33
|
+
}).strict();
|
|
34
|
+
export const secretPlaceholderSchema = z.discriminatedUnion("provider", [
|
|
35
|
+
envSecretSchema,
|
|
36
|
+
infisicalSecretSchema,
|
|
37
|
+
]);
|
|
38
|
+
export const secretValueSchema = z.union([
|
|
39
|
+
z.string(),
|
|
40
|
+
secretPlaceholderSchema,
|
|
41
|
+
]);
|
|
42
|
+
export const hostPlaceholderSchema = z.discriminatedUnion("provider", [
|
|
43
|
+
inlineHostSchema,
|
|
44
|
+
externalHostSchema,
|
|
45
|
+
systemHostSchema,
|
|
46
|
+
]);
|
|
47
|
+
export const hostValueSchema = z.union([
|
|
48
|
+
z.string(),
|
|
49
|
+
hostPlaceholderSchema,
|
|
50
|
+
]);
|
|
51
|
+
//# sourceMappingURL=placeholders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placeholders.js","sourceRoot":"","sources":["../src/placeholders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACzB,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC/B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC7B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAChD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,kBAAkB,CAAC,UAAU,EAAE;IACtE,eAAe;IACf,qBAAqB;CACtB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC;IACvC,CAAC,CAAC,MAAM,EAAE;IACV,uBAAuB;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,kBAAkB,CAAC,UAAU,EAAE;IACpE,gBAAgB;IAChB,kBAAkB;IAClB,gBAAgB;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC;IACrC,CAAC,CAAC,MAAM,EAAE;IACV,qBAAqB;CACtB,CAAC,CAAC","sourcesContent":["import { z } from \"zod\";\n\nconst envSecretSchema = z.object({\n provider: z.literal(\"env\"),\n key: z.string().min(1),\n optional: z.boolean().optional(),\n default: z.string().optional(),\n}).strict();\n\nconst infisicalSecretSchema = z.object({\n provider: z.literal(\"infisical\"),\n path: z.string().min(1),\n key: z.string().min(1),\n optional: z.boolean().optional(),\n environment: z.string().optional(),\n projectId: z.string().optional(),\n default: z.string().optional(),\n}).strict();\n\nconst inlineHostSchema = z.object({\n provider: z.literal(\"inline\"),\n value: z.string().min(1),\n}).strict();\n\nconst externalHostSchema = z.object({\n provider: z.literal(\"external\"),\n key: z.string().min(1),\n optional: z.boolean().optional(),\n default: z.string().optional(),\n}).strict();\n\nconst systemHostSchema = z.object({\n provider: z.literal(\"system\"),\n family: z.enum([\"IPv4\", \"IPv6\"]).default(\"IPv4\"),\n interfaceName: z.string().optional(),\n optional: z.boolean().optional(),\n default: z.string().optional(),\n}).strict();\n\nexport const secretPlaceholderSchema = z.discriminatedUnion(\"provider\", [\n envSecretSchema,\n infisicalSecretSchema,\n]);\n\nexport const secretValueSchema = z.union([\n z.string(),\n secretPlaceholderSchema,\n]);\n\nexport const hostPlaceholderSchema = z.discriminatedUnion(\"provider\", [\n inlineHostSchema,\n externalHostSchema,\n systemHostSchema,\n]);\n\nexport const hostValueSchema = z.union([\n z.string(),\n hostPlaceholderSchema,\n]);\n"]}
|