@xano/developer-mcp 1.0.53 → 1.0.56
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/tools/xanoscript_docs.d.ts +7 -0
- package/dist/tools/xanoscript_docs.js +11 -3
- package/dist/xanoscript.d.ts +1 -0
- package/dist/xanoscript.js +30 -14
- package/dist/xanoscript.test.js +49 -6
- package/dist/xanoscript_docs/README.md +7 -7
- package/dist/xanoscript_docs/cheatsheet.md +4 -1
- package/dist/xanoscript_docs/database.md +2 -2
- package/dist/xanoscript_docs/docs_index.json +60 -53
- package/dist/xanoscript_docs/essentials.md +665 -0
- package/dist/xanoscript_docs/functions.md +1 -1
- package/dist/xanoscript_docs/middleware.md +5 -18
- package/dist/xanoscript_docs/quickstart.md +15 -6
- package/dist/xanoscript_docs/security.md +18 -43
- package/dist/xanoscript_docs/syntax/array-filters.md +238 -0
- package/dist/xanoscript_docs/syntax/functions.md +136 -0
- package/dist/xanoscript_docs/syntax/string-filters.md +188 -0
- package/dist/xanoscript_docs/syntax.md +92 -900
- package/dist/xanoscript_docs/triggers.md +1 -1
- package/dist/xanoscript_docs/types.md +1 -1
- package/package.json +1 -1
|
@@ -104,7 +104,8 @@ export const xanoscriptDocsToolDefinition = {
|
|
|
104
104
|
description: "Get XanoScript programming language documentation for AI code generation. " +
|
|
105
105
|
"Call without parameters for overview (README). " +
|
|
106
106
|
"Use 'topic' for specific documentation, or 'file_path' for context-aware docs based on the file you're editing. " +
|
|
107
|
-
"Use mode='quick_reference' for compact syntax
|
|
107
|
+
"Use mode='quick_reference' for compact syntax reference (recommended for context efficiency). " +
|
|
108
|
+
"file_path mode defaults to 'quick_reference' to reduce context size; use mode='full' to get complete docs.",
|
|
108
109
|
annotations: {
|
|
109
110
|
readOnlyHint: true,
|
|
110
111
|
destructiveHint: false,
|
|
@@ -132,9 +133,16 @@ export const xanoscriptDocsToolDefinition = {
|
|
|
132
133
|
type: "string",
|
|
133
134
|
enum: ["full", "quick_reference"],
|
|
134
135
|
description: "'full' = complete documentation with explanations and examples. " +
|
|
135
|
-
"'quick_reference' = compact
|
|
136
|
+
"'quick_reference' = compact reference with just syntax patterns and signatures. " +
|
|
136
137
|
"Use 'quick_reference' to save context window space when you just need a reminder. " +
|
|
137
|
-
"Default: 'full'.",
|
|
138
|
+
"Default: 'full' for topic mode, 'quick_reference' for file_path mode.",
|
|
139
|
+
},
|
|
140
|
+
exclude_topics: {
|
|
141
|
+
type: "array",
|
|
142
|
+
items: { type: "string" },
|
|
143
|
+
description: "List of topic names to exclude from file_path results. " +
|
|
144
|
+
"Use this to skip topics you've already loaded (e.g., exclude_topics: ['syntax', 'essentials']). " +
|
|
145
|
+
"Only applies when using file_path parameter.",
|
|
138
146
|
},
|
|
139
147
|
},
|
|
140
148
|
required: [],
|
package/dist/xanoscript.d.ts
CHANGED
package/dist/xanoscript.js
CHANGED
|
@@ -16,20 +16,30 @@ export const XANOSCRIPT_DOCS_V2 = {
|
|
|
16
16
|
applyTo: [],
|
|
17
17
|
description: "XanoScript overview, workspace structure, and quick reference",
|
|
18
18
|
},
|
|
19
|
-
|
|
20
|
-
file: "
|
|
19
|
+
essentials: {
|
|
20
|
+
file: "essentials.md",
|
|
21
21
|
applyTo: ["**/*.xs"],
|
|
22
|
-
description: "
|
|
22
|
+
description: "Common patterns, quick reference, and common mistakes to avoid",
|
|
23
23
|
},
|
|
24
24
|
syntax: {
|
|
25
25
|
file: "syntax.md",
|
|
26
26
|
applyTo: ["**/*.xs"],
|
|
27
27
|
description: "Expressions, operators, and filters for all XanoScript code",
|
|
28
28
|
},
|
|
29
|
-
|
|
30
|
-
file: "
|
|
31
|
-
applyTo: [
|
|
32
|
-
description: "
|
|
29
|
+
"syntax/string-filters": {
|
|
30
|
+
file: "syntax/string-filters.md",
|
|
31
|
+
applyTo: [],
|
|
32
|
+
description: "String filters, regex, encoding, security filters, text functions",
|
|
33
|
+
},
|
|
34
|
+
"syntax/array-filters": {
|
|
35
|
+
file: "syntax/array-filters.md",
|
|
36
|
+
applyTo: [],
|
|
37
|
+
description: "Array filters, functional operations, and array functions",
|
|
38
|
+
},
|
|
39
|
+
"syntax/functions": {
|
|
40
|
+
file: "syntax/functions.md",
|
|
41
|
+
applyTo: [],
|
|
42
|
+
description: "Math filters/functions, object functions, bitwise operations",
|
|
33
43
|
},
|
|
34
44
|
types: {
|
|
35
45
|
file: "types.md",
|
|
@@ -93,7 +103,7 @@ export const XANOSCRIPT_DOCS_V2 = {
|
|
|
93
103
|
},
|
|
94
104
|
integrations: {
|
|
95
105
|
file: "integrations.md",
|
|
96
|
-
applyTo: [
|
|
106
|
+
applyTo: [],
|
|
97
107
|
description: "External service integrations index - see sub-topics for details",
|
|
98
108
|
},
|
|
99
109
|
"integrations/cloud-storage": {
|
|
@@ -133,7 +143,7 @@ export const XANOSCRIPT_DOCS_V2 = {
|
|
|
133
143
|
},
|
|
134
144
|
addons: {
|
|
135
145
|
file: "addons.md",
|
|
136
|
-
applyTo: ["addons/*.xs"
|
|
146
|
+
applyTo: ["addons/*.xs"],
|
|
137
147
|
description: "Reusable subqueries for fetching related data",
|
|
138
148
|
},
|
|
139
149
|
debugging: {
|
|
@@ -148,12 +158,12 @@ export const XANOSCRIPT_DOCS_V2 = {
|
|
|
148
158
|
},
|
|
149
159
|
realtime: {
|
|
150
160
|
file: "realtime.md",
|
|
151
|
-
applyTo: ["
|
|
161
|
+
applyTo: ["triggers/**/*.xs"],
|
|
152
162
|
description: "Real-time channels and events for push updates",
|
|
153
163
|
},
|
|
154
164
|
schema: {
|
|
155
165
|
file: "schema.md",
|
|
156
|
-
applyTo: [
|
|
166
|
+
applyTo: [],
|
|
157
167
|
description: "Runtime schema parsing and validation",
|
|
158
168
|
},
|
|
159
169
|
security: {
|
|
@@ -163,7 +173,7 @@ export const XANOSCRIPT_DOCS_V2 = {
|
|
|
163
173
|
},
|
|
164
174
|
streaming: {
|
|
165
175
|
file: "streaming.md",
|
|
166
|
-
applyTo: [
|
|
176
|
+
applyTo: [],
|
|
167
177
|
description: "Streaming data from files, requests, and responses",
|
|
168
178
|
},
|
|
169
179
|
middleware: {
|
|
@@ -241,7 +251,9 @@ export function getXanoscriptDocsVersion(docsPath) {
|
|
|
241
251
|
* Read XanoScript documentation with v2 structure
|
|
242
252
|
*/
|
|
243
253
|
export function readXanoscriptDocsV2(docsPath, args) {
|
|
244
|
-
|
|
254
|
+
// Default to quick_reference for file_path mode (loads many topics),
|
|
255
|
+
// full for topic mode (loads single topic)
|
|
256
|
+
const mode = args?.mode || (args?.file_path ? "quick_reference" : "full");
|
|
245
257
|
const version = getXanoscriptDocsVersion(docsPath);
|
|
246
258
|
// Default: return README
|
|
247
259
|
if (!args?.topic && !args?.file_path) {
|
|
@@ -250,7 +262,11 @@ export function readXanoscriptDocsV2(docsPath, args) {
|
|
|
250
262
|
}
|
|
251
263
|
// Context-aware: return docs matching file pattern
|
|
252
264
|
if (args?.file_path) {
|
|
253
|
-
|
|
265
|
+
let topics = getDocsForFilePath(args.file_path);
|
|
266
|
+
// Filter out excluded topics
|
|
267
|
+
if (args.exclude_topics && args.exclude_topics.length > 0) {
|
|
268
|
+
topics = topics.filter((t) => !args.exclude_topics.includes(t));
|
|
269
|
+
}
|
|
254
270
|
if (topics.length === 0) {
|
|
255
271
|
throw new Error(`No documentation found for file pattern: ${args.file_path}\n\nAvailable topics: ${Object.keys(XANOSCRIPT_DOCS_V2).join(", ")}`);
|
|
256
272
|
}
|
package/dist/xanoscript.test.js
CHANGED
|
@@ -10,9 +10,11 @@ describe("xanoscript module", () => {
|
|
|
10
10
|
it("should have all expected topics", () => {
|
|
11
11
|
const expectedTopics = [
|
|
12
12
|
"readme",
|
|
13
|
-
"
|
|
13
|
+
"essentials",
|
|
14
14
|
"syntax",
|
|
15
|
-
"
|
|
15
|
+
"syntax/string-filters",
|
|
16
|
+
"syntax/array-filters",
|
|
17
|
+
"syntax/functions",
|
|
16
18
|
"types",
|
|
17
19
|
"tables",
|
|
18
20
|
"functions",
|
|
@@ -70,7 +72,12 @@ describe("xanoscript module", () => {
|
|
|
70
72
|
expect(result).toContain("types");
|
|
71
73
|
expect(result).toContain("database");
|
|
72
74
|
expect(result).toContain("unit-testing");
|
|
73
|
-
|
|
75
|
+
// Niche topics should NOT be auto-included for apis
|
|
76
|
+
expect(result).not.toContain("addons");
|
|
77
|
+
expect(result).not.toContain("integrations");
|
|
78
|
+
expect(result).not.toContain("realtime");
|
|
79
|
+
expect(result).not.toContain("schema");
|
|
80
|
+
expect(result).not.toContain("streaming");
|
|
74
81
|
});
|
|
75
82
|
it("should match functions files", () => {
|
|
76
83
|
const result = getDocsForFilePath("functions/utils/format.xs");
|
|
@@ -78,6 +85,12 @@ describe("xanoscript module", () => {
|
|
|
78
85
|
expect(result).toContain("functions");
|
|
79
86
|
expect(result).toContain("types");
|
|
80
87
|
expect(result).toContain("database");
|
|
88
|
+
// Niche topics should NOT be auto-included for functions
|
|
89
|
+
expect(result).not.toContain("addons");
|
|
90
|
+
expect(result).not.toContain("integrations");
|
|
91
|
+
expect(result).not.toContain("realtime");
|
|
92
|
+
expect(result).not.toContain("schema");
|
|
93
|
+
expect(result).not.toContain("streaming");
|
|
81
94
|
});
|
|
82
95
|
it("should match tables files", () => {
|
|
83
96
|
const result = getDocsForFilePath("tables/users.xs");
|
|
@@ -89,7 +102,8 @@ describe("xanoscript module", () => {
|
|
|
89
102
|
expect(result).toContain("syntax");
|
|
90
103
|
expect(result).toContain("tasks");
|
|
91
104
|
expect(result).toContain("database");
|
|
92
|
-
|
|
105
|
+
// integrations is now topic-only (not auto-included)
|
|
106
|
+
expect(result).not.toContain("integrations");
|
|
93
107
|
});
|
|
94
108
|
it("should match triggers files", () => {
|
|
95
109
|
const result = getDocsForFilePath("triggers/table/users.xs");
|
|
@@ -143,10 +157,10 @@ describe("xanoscript module", () => {
|
|
|
143
157
|
const result = getDocsForFilePath("apis/test.xs");
|
|
144
158
|
expect(result).not.toContain("readme");
|
|
145
159
|
});
|
|
146
|
-
it("should include syntax and
|
|
160
|
+
it("should include syntax and essentials for .xs files", () => {
|
|
147
161
|
const result = getDocsForFilePath("some/random/file.xs");
|
|
148
162
|
expect(result).toContain("syntax");
|
|
149
|
-
expect(result).toContain("
|
|
163
|
+
expect(result).toContain("essentials");
|
|
150
164
|
});
|
|
151
165
|
});
|
|
152
166
|
describe("extractQuickReference", () => {
|
|
@@ -270,6 +284,35 @@ Even more content.
|
|
|
270
284
|
});
|
|
271
285
|
expect(quickResult).toContain("Mode: quick_reference");
|
|
272
286
|
});
|
|
287
|
+
it("should default to quick_reference mode for file_path", () => {
|
|
288
|
+
const result = readXanoscriptDocsV2(DOCS_PATH, {
|
|
289
|
+
file_path: "apis/test.xs",
|
|
290
|
+
});
|
|
291
|
+
expect(result).toContain("Mode: quick_reference");
|
|
292
|
+
});
|
|
293
|
+
it("should default to full mode for topic", () => {
|
|
294
|
+
const result = readXanoscriptDocsV2(DOCS_PATH, { topic: "syntax" });
|
|
295
|
+
// Full mode returns the complete doc content, not quick_reference
|
|
296
|
+
expect(result).not.toContain("Mode: quick_reference");
|
|
297
|
+
});
|
|
298
|
+
it("should support exclude_topics with file_path", () => {
|
|
299
|
+
const result = readXanoscriptDocsV2(DOCS_PATH, {
|
|
300
|
+
file_path: "apis/users/create.xs",
|
|
301
|
+
exclude_topics: ["syntax", "essentials"],
|
|
302
|
+
});
|
|
303
|
+
expect(result).toContain("Matched topics:");
|
|
304
|
+
expect(result).not.toContain("Matched topics: syntax");
|
|
305
|
+
// Verify excluded topics are not in the matched list
|
|
306
|
+
const matchLine = result.split("\n").find((l) => l.startsWith("Matched topics:"));
|
|
307
|
+
expect(matchLine).not.toContain("syntax");
|
|
308
|
+
expect(matchLine).not.toContain("essentials");
|
|
309
|
+
});
|
|
310
|
+
it("should throw when all topics are excluded via exclude_topics", () => {
|
|
311
|
+
expect(() => readXanoscriptDocsV2(DOCS_PATH, {
|
|
312
|
+
file_path: "branch.xs",
|
|
313
|
+
exclude_topics: ["syntax", "essentials", "debugging", "branch"],
|
|
314
|
+
})).toThrow("No documentation found");
|
|
315
|
+
});
|
|
273
316
|
it("should throw for invalid docs path", () => {
|
|
274
317
|
expect(() => readXanoscriptDocsV2("/nonexistent/path", { topic: "syntax" })).toThrow();
|
|
275
318
|
});
|
|
@@ -111,7 +111,7 @@ $db.table.field // Database field reference (in queries)
|
|
|
111
111
|
$this // Current item in loops/maps
|
|
112
112
|
```
|
|
113
113
|
|
|
114
|
-
**Reserved Variables:** The following cannot be used as variable names: `$response`, `$output`, `$input`, `$auth`, `$env`, `$db`, `$this`, `$result`, `$index`.
|
|
114
|
+
**Reserved Variables:** The following cannot be used as variable names: `$response`, `$output`, `$input`, `$auth`, `$env`, `$db`, `$this`, `$result`, `$index`. See `xanoscript_docs({ topic: "essentials" })` for detailed variable access rules.
|
|
115
115
|
|
|
116
116
|
### Type Names
|
|
117
117
|
|
|
@@ -162,7 +162,7 @@ This helps AI tools apply the correct documentation based on the file being edit
|
|
|
162
162
|
|
|
163
163
|
For common patterns and quick examples, use:
|
|
164
164
|
```
|
|
165
|
-
xanoscript_docs({ topic: "
|
|
165
|
+
xanoscript_docs({ topic: "essentials" })
|
|
166
166
|
```
|
|
167
167
|
|
|
168
168
|
This includes:
|
|
@@ -182,8 +182,8 @@ Use `xanoscript_docs({ topic: "<topic>" })` to retrieve documentation.
|
|
|
182
182
|
|
|
183
183
|
| Topic | Description | Key Sections |
|
|
184
184
|
| ------------ | ---------------------------------------------------- | ------------ |
|
|
185
|
-
| `
|
|
186
|
-
| `syntax` | Expressions, operators, filters, system variables | Filters
|
|
185
|
+
| `essentials` | Common patterns, quick examples, mistakes to avoid | Patterns, Common Mistakes |
|
|
186
|
+
| `syntax` | Expressions, operators, filters, system variables | Filters, Error Handling |
|
|
187
187
|
| `types` | Data types, validation, input blocks | Validation Filters, Input Blocks |
|
|
188
188
|
| `functions` | Reusable function stacks, async, loops | Loops, Async Patterns |
|
|
189
189
|
| `schema` | Runtime schema parsing and validation | parse.object, parse.array |
|
|
@@ -193,7 +193,7 @@ Use `xanoscript_docs({ topic: "<topic>" })` to retrieve documentation.
|
|
|
193
193
|
| Topic | Description | Key Sections |
|
|
194
194
|
| ----------- | ---------------------------------------------------------- | ------------ |
|
|
195
195
|
| `tables` | Database schema definitions with indexes and relationships | Indexes, Foreign Keys |
|
|
196
|
-
| `database` | All db.\* operations: query, get, add, edit, patch, delete | Decision Tree
|
|
196
|
+
| `database` | All db.\* operations: query, get, add, edit, patch, delete | Decision Tree, Bulk Ops |
|
|
197
197
|
| `addons` | Reusable subqueries for fetching related data | Usage Patterns |
|
|
198
198
|
| `streaming` | Streaming data from files, requests, and responses | File Streams, API Streams |
|
|
199
199
|
|
|
@@ -201,7 +201,7 @@ Use `xanoscript_docs({ topic: "<topic>" })` to retrieve documentation.
|
|
|
201
201
|
|
|
202
202
|
| Topic | Description | Key Sections |
|
|
203
203
|
| ---------- | --------------------------------------------------------------- | ------------ |
|
|
204
|
-
| `apis` | HTTP endpoint definitions with authentication and CRUD patterns | Decision Tree
|
|
204
|
+
| `apis` | HTTP endpoint definitions with authentication and CRUD patterns | Decision Tree, CRUD Examples |
|
|
205
205
|
| `tasks` | Scheduled and cron jobs | Cron Syntax, Input Handling |
|
|
206
206
|
| `triggers` | Event-driven handlers (table, realtime, workspace, agent, MCP) | Predefined Inputs, Event Types |
|
|
207
207
|
| `realtime` | Real-time channels and events for push updates | Channels, Events |
|
|
@@ -287,4 +287,4 @@ function "call_external_api" {
|
|
|
287
287
|
}
|
|
288
288
|
```
|
|
289
289
|
|
|
290
|
-
For more patterns, see `xanoscript_docs({ topic: "
|
|
290
|
+
For more patterns, see `xanoscript_docs({ topic: "essentials" })` or `xanoscript_docs({ topic: "integrations" })`.
|
|
@@ -613,7 +613,7 @@ try_catch {
|
|
|
613
613
|
conditional {
|
|
614
614
|
if ($error.name == "DeadlockError") {
|
|
615
615
|
// Retry logic
|
|
616
|
-
util.sleep { value =
|
|
616
|
+
util.sleep { value = 1 } // value = seconds
|
|
617
617
|
function.run "retry_transaction" { input = $input }
|
|
618
618
|
}
|
|
619
619
|
else {
|
|
@@ -646,6 +646,6 @@ Explore more with `xanoscript_docs({ topic: "<topic>" })`:
|
|
|
646
646
|
|-------|-------------|
|
|
647
647
|
| `tables` | Database schema definitions with indexes and relationships |
|
|
648
648
|
| `syntax` | Query filters, operators, and expressions |
|
|
649
|
-
| `
|
|
649
|
+
| `essentials` | Common CRUD patterns and examples |
|
|
650
650
|
| `addons` | Reusable subqueries for fetching related data |
|
|
651
651
|
| `performance` | Query optimization best practices |
|
|
@@ -3,24 +3,33 @@
|
|
|
3
3
|
"description": "Machine-readable index for XanoScript documentation",
|
|
4
4
|
|
|
5
5
|
"topics": {
|
|
6
|
-
"
|
|
7
|
-
"file": "
|
|
8
|
-
"purpose": "
|
|
6
|
+
"essentials": {
|
|
7
|
+
"file": "essentials.md",
|
|
8
|
+
"purpose": "Common patterns, quick reference, and mistakes to avoid",
|
|
9
9
|
"priority": 1,
|
|
10
|
-
"aliases": ["quick", "common", "basics", "start"]
|
|
11
|
-
},
|
|
12
|
-
"quickstart": {
|
|
13
|
-
"file": "quickstart.md",
|
|
14
|
-
"purpose": "Common patterns and mistakes to avoid",
|
|
15
|
-
"priority": 2,
|
|
16
|
-
"aliases": ["start", "getting-started", "patterns", "mistakes"]
|
|
10
|
+
"aliases": ["quick", "common", "basics", "start", "cheatsheet", "quickstart", "patterns", "mistakes"]
|
|
17
11
|
},
|
|
18
12
|
"syntax": {
|
|
19
13
|
"file": "syntax.md",
|
|
20
|
-
"purpose": "Operators, filters, expressions, error handling",
|
|
21
|
-
"priority":
|
|
14
|
+
"purpose": "Operators, core filters, expressions, error handling",
|
|
15
|
+
"priority": 2,
|
|
22
16
|
"aliases": ["filters", "operators", "expressions"]
|
|
23
17
|
},
|
|
18
|
+
"syntax/string-filters": {
|
|
19
|
+
"file": "syntax/string-filters.md",
|
|
20
|
+
"purpose": "String filters, regex, encoding, security filters, text functions",
|
|
21
|
+
"aliases": ["string", "regex", "encoding", "security-filters"]
|
|
22
|
+
},
|
|
23
|
+
"syntax/array-filters": {
|
|
24
|
+
"file": "syntax/array-filters.md",
|
|
25
|
+
"purpose": "Array filters, functional operations, array functions",
|
|
26
|
+
"aliases": ["array", "map", "filter", "reduce", "sort"]
|
|
27
|
+
},
|
|
28
|
+
"syntax/functions": {
|
|
29
|
+
"file": "syntax/functions.md",
|
|
30
|
+
"purpose": "Math filters/functions, object functions, bitwise operations",
|
|
31
|
+
"aliases": ["math", "object", "bitwise"]
|
|
32
|
+
},
|
|
24
33
|
"types": {
|
|
25
34
|
"file": "types.md",
|
|
26
35
|
"purpose": "Data types, validation, input blocks",
|
|
@@ -220,46 +229,44 @@
|
|
|
220
229
|
"function.run": { "file": "functions.md" },
|
|
221
230
|
"redis.get": { "file": "integrations/redis.md" },
|
|
222
231
|
"redis.set": { "file": "integrations/redis.md" },
|
|
223
|
-
"
|
|
224
|
-
"
|
|
225
|
-
"array.
|
|
226
|
-
"array.
|
|
227
|
-
"array.
|
|
228
|
-
"array.
|
|
229
|
-
"array.
|
|
230
|
-
"array.
|
|
231
|
-
"array.
|
|
232
|
-
"array.
|
|
233
|
-
"array.
|
|
234
|
-
"array.
|
|
235
|
-
"array.
|
|
236
|
-
"array.
|
|
237
|
-
"array.
|
|
238
|
-
"array.
|
|
239
|
-
"array.
|
|
240
|
-
"
|
|
241
|
-
"
|
|
242
|
-
"text.
|
|
243
|
-
"text.
|
|
244
|
-
"text.
|
|
245
|
-
"text.
|
|
246
|
-
"text.
|
|
247
|
-
"text.
|
|
248
|
-
"text.
|
|
249
|
-
"text.
|
|
250
|
-
"text.
|
|
251
|
-
"
|
|
252
|
-
"
|
|
253
|
-
"math.
|
|
254
|
-
"math.
|
|
255
|
-
"math.
|
|
256
|
-
"math.
|
|
257
|
-
"math.bitwise.
|
|
258
|
-
"
|
|
259
|
-
"
|
|
260
|
-
"object.
|
|
261
|
-
"object.values": { "file": "syntax.md" },
|
|
262
|
-
"object.entries": { "file": "syntax.md" },
|
|
232
|
+
"array.push": { "file": "syntax/array-filters.md" },
|
|
233
|
+
"array.pop": { "file": "syntax/array-filters.md" },
|
|
234
|
+
"array.shift": { "file": "syntax/array-filters.md" },
|
|
235
|
+
"array.unshift": { "file": "syntax/array-filters.md" },
|
|
236
|
+
"array.merge": { "file": "syntax/array-filters.md" },
|
|
237
|
+
"array.find": { "file": "syntax/array-filters.md" },
|
|
238
|
+
"array.find_index": { "file": "syntax/array-filters.md" },
|
|
239
|
+
"array.has": { "file": "syntax/array-filters.md" },
|
|
240
|
+
"array.every": { "file": "syntax/array-filters.md" },
|
|
241
|
+
"array.filter": { "file": "syntax/array-filters.md" },
|
|
242
|
+
"array.filter_count": { "file": "syntax/array-filters.md" },
|
|
243
|
+
"array.map": { "file": "syntax/array-filters.md" },
|
|
244
|
+
"array.partition": { "file": "syntax/array-filters.md" },
|
|
245
|
+
"array.group_by": { "file": "syntax/array-filters.md" },
|
|
246
|
+
"array.union": { "file": "syntax/array-filters.md" },
|
|
247
|
+
"array.difference": { "file": "syntax/array-filters.md" },
|
|
248
|
+
"array.intersection": { "file": "syntax/array-filters.md" },
|
|
249
|
+
"text.contains": { "file": "syntax/string-filters.md" },
|
|
250
|
+
"text.icontains": { "file": "syntax/string-filters.md" },
|
|
251
|
+
"text.starts_with": { "file": "syntax/string-filters.md" },
|
|
252
|
+
"text.istarts_with": { "file": "syntax/string-filters.md" },
|
|
253
|
+
"text.ends_with": { "file": "syntax/string-filters.md" },
|
|
254
|
+
"text.iends_with": { "file": "syntax/string-filters.md" },
|
|
255
|
+
"text.trim": { "file": "syntax/string-filters.md" },
|
|
256
|
+
"text.ltrim": { "file": "syntax/string-filters.md" },
|
|
257
|
+
"text.rtrim": { "file": "syntax/string-filters.md" },
|
|
258
|
+
"text.append": { "file": "syntax/string-filters.md" },
|
|
259
|
+
"text.prepend": { "file": "syntax/string-filters.md" },
|
|
260
|
+
"math.add": { "file": "syntax/functions.md" },
|
|
261
|
+
"math.sub": { "file": "syntax/functions.md" },
|
|
262
|
+
"math.mul": { "file": "syntax/functions.md" },
|
|
263
|
+
"math.div": { "file": "syntax/functions.md" },
|
|
264
|
+
"math.bitwise.and": { "file": "syntax/functions.md" },
|
|
265
|
+
"math.bitwise.or": { "file": "syntax/functions.md" },
|
|
266
|
+
"math.bitwise.xor": { "file": "syntax/functions.md" },
|
|
267
|
+
"object.keys": { "file": "syntax/functions.md" },
|
|
268
|
+
"object.values": { "file": "syntax/functions.md" },
|
|
269
|
+
"object.entries": { "file": "syntax/functions.md" },
|
|
263
270
|
"redis.remove": { "file": "integrations/redis.md" },
|
|
264
271
|
"redis.keys": { "file": "integrations/redis.md" },
|
|
265
272
|
"security.jwe_encode": { "file": "security.md" },
|
|
@@ -297,7 +304,7 @@
|
|
|
297
304
|
"authentication": ["security.md", "apis.md"],
|
|
298
305
|
"authorization": ["security.md"],
|
|
299
306
|
"rate_limiting": ["security.md", "integrations/redis.md"],
|
|
300
|
-
"error_handling": ["syntax.md", "
|
|
307
|
+
"error_handling": ["syntax.md", "essentials.md"],
|
|
301
308
|
"pagination": ["database.md", "apis.md"],
|
|
302
309
|
"file_upload": ["integrations/cloud-storage.md", "streaming.md"],
|
|
303
310
|
"caching": ["performance.md", "integrations/redis.md"],
|