@claudetools/tools 0.8.10 → 0.9.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/codedna/generators/astro.d.ts +18 -0
- package/dist/codedna/generators/astro.js +91 -0
- package/dist/codedna/generators/authjs.d.ts +18 -0
- package/dist/codedna/generators/authjs.js +68 -0
- package/dist/codedna/generators/better-auth.d.ts +18 -0
- package/dist/codedna/generators/better-auth.js +62 -0
- package/dist/codedna/generators/drizzle-orm.d.ts +18 -0
- package/dist/codedna/generators/drizzle-orm.js +65 -0
- package/dist/codedna/generators/elysia-api.d.ts +12 -0
- package/dist/codedna/generators/elysia-api.js +64 -0
- package/dist/codedna/generators/hono-api.d.ts +12 -0
- package/dist/codedna/generators/hono-api.js +64 -0
- package/dist/codedna/generators/lucia-auth.d.ts +18 -0
- package/dist/codedna/generators/lucia-auth.js +69 -0
- package/dist/codedna/generators/prisma.d.ts +18 -0
- package/dist/codedna/generators/prisma.js +64 -0
- package/dist/codedna/generators/react-router-v7.d.ts +18 -0
- package/dist/codedna/generators/react-router-v7.js +77 -0
- package/dist/codedna/generators/react19-shadcn.d.ts +21 -0
- package/dist/codedna/generators/react19-shadcn.js +367 -0
- package/dist/codedna/generators/sveltekit.d.ts +18 -0
- package/dist/codedna/generators/sveltekit.js +73 -0
- package/dist/codedna/generators/tanstack-start-drizzle.d.ts +92 -0
- package/dist/codedna/generators/tanstack-start-drizzle.js +824 -0
- package/dist/codedna/generators/trpc-api.d.ts +12 -0
- package/dist/codedna/generators/trpc-api.js +64 -0
- package/dist/codedna/index.d.ts +31 -0
- package/dist/codedna/index.js +39 -0
- package/dist/codedna/kappa-api-generator.d.ts +89 -0
- package/dist/codedna/kappa-api-generator.js +493 -0
- package/dist/codedna/kappa-ast.d.ts +552 -0
- package/dist/codedna/kappa-ast.js +141 -0
- package/dist/codedna/kappa-cli.d.ts +2 -0
- package/dist/codedna/kappa-cli.js +302 -0
- package/dist/codedna/kappa-component-generator.d.ts +47 -0
- package/dist/codedna/kappa-component-generator.js +295 -0
- package/dist/codedna/kappa-design-generator.d.ts +52 -0
- package/dist/codedna/kappa-design-generator.js +365 -0
- package/dist/codedna/kappa-drizzle-generator.d.ts +45 -0
- package/dist/codedna/kappa-drizzle-generator.js +355 -0
- package/dist/codedna/kappa-form-generator.d.ts +51 -0
- package/dist/codedna/kappa-form-generator.js +319 -0
- package/dist/codedna/kappa-lexer.d.ts +268 -0
- package/dist/codedna/kappa-lexer.js +757 -0
- package/dist/codedna/kappa-page-generator.d.ts +57 -0
- package/dist/codedna/kappa-page-generator.js +338 -0
- package/dist/codedna/kappa-parser.d.ts +261 -0
- package/dist/codedna/kappa-parser.js +2547 -0
- package/dist/codedna/kappa-provenance.d.ts +101 -0
- package/dist/codedna/kappa-provenance.js +199 -0
- package/dist/codedna/kappa-types-generator.d.ts +37 -0
- package/dist/codedna/kappa-types-generator.js +159 -0
- package/dist/codedna/kappa-validator.d.ts +86 -0
- package/dist/codedna/kappa-validator.js +638 -0
- package/dist/codedna/kappa-zod-generator.d.ts +32 -0
- package/dist/codedna/kappa-zod-generator.js +216 -0
- package/dist/handlers/codedna-handlers.d.ts +1 -1
- package/dist/handlers/kappa-handlers.d.ts +116 -0
- package/dist/handlers/kappa-handlers.js +465 -0
- package/dist/handlers/tool-handlers.js +121 -0
- package/dist/templates/claude-md.d.ts +1 -1
- package/dist/templates/claude-md.js +166 -9
- package/dist/tools.js +199 -0
- package/docs/research/2026-01-02-codedna-il-specification.md +639 -0
- package/docs/research/2026-01-02-codedna-v2-research.md +943 -0
- package/docs/research/2026-01-02-computation-foundations.md +564 -0
- package/docs/research/2026-01-02-hardware-description.md +814 -0
- package/docs/research/2026-01-02-kappa-specification.md +697 -0
- package/docs/research/2026-01-02-kappa-tanstack-example.md +527 -0
- package/docs/research/2026-01-02-kappa-v2-synthesis.md +406 -0
- package/docs/research/2026-01-02-kappa-v2.5-specification.md +1218 -0
- package/docs/research/2026-01-02-kappa-v3-specification.md +1864 -0
- package/docs/research/2026-01-02-kappa-whitepaper.md +662 -0
- package/docs/research/2026-01-02-logic-constraint.md +731 -0
- package/docs/research/2026-01-02-quantum-computation.md +635 -0
- package/package.json +4 -2
|
@@ -0,0 +1,757 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Kappa v2.5 Lexer
|
|
3
|
+
// =============================================================================
|
|
4
|
+
//
|
|
5
|
+
// Chevrotain-based lexer for tokenizing Kappa specification language.
|
|
6
|
+
// Uses word boundary assertions to prevent partial matching issues.
|
|
7
|
+
//
|
|
8
|
+
// Reference: docs/research/2026-01-02-kappa-v2.5-specification.md
|
|
9
|
+
//
|
|
10
|
+
import { createToken, Lexer } from 'chevrotain';
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// Token Categories
|
|
13
|
+
// =============================================================================
|
|
14
|
+
// Whitespace and comments (skipped)
|
|
15
|
+
export const WhiteSpace = createToken({
|
|
16
|
+
name: 'WhiteSpace',
|
|
17
|
+
pattern: /\s+/,
|
|
18
|
+
group: Lexer.SKIPPED,
|
|
19
|
+
});
|
|
20
|
+
export const LineComment = createToken({
|
|
21
|
+
name: 'LineComment',
|
|
22
|
+
// Negative lookahead: don't match if followed by hex color (6 or 8 hex digits)
|
|
23
|
+
pattern: /#(?![0-9a-fA-F]{6}(?:[0-9a-fA-F]{2})?\b)[^\n\r]*/,
|
|
24
|
+
group: Lexer.SKIPPED,
|
|
25
|
+
});
|
|
26
|
+
// =============================================================================
|
|
27
|
+
// Literals (must come before keywords)
|
|
28
|
+
// =============================================================================
|
|
29
|
+
// String literal (double-quoted)
|
|
30
|
+
export const StringLiteral = createToken({
|
|
31
|
+
name: 'StringLiteral',
|
|
32
|
+
pattern: /"(?:[^"\\]|\\.)*"/,
|
|
33
|
+
});
|
|
34
|
+
// Hex color literal
|
|
35
|
+
export const HexColor = createToken({
|
|
36
|
+
name: 'HexColor',
|
|
37
|
+
pattern: /#[0-9a-fA-F]{6}(?:[0-9a-fA-F]{2})?/,
|
|
38
|
+
});
|
|
39
|
+
// CSS function (e.g., cubic-bezier(...))
|
|
40
|
+
export const CSSFunctionLiteral = createToken({
|
|
41
|
+
name: 'CSSFunctionLiteral',
|
|
42
|
+
pattern: /cubic-bezier\([^)]+\)/,
|
|
43
|
+
});
|
|
44
|
+
// Duration literal (e.g., 7d, 1h, 30m, 15s)
|
|
45
|
+
export const DurationLiteral = createToken({
|
|
46
|
+
name: 'DurationLiteral',
|
|
47
|
+
pattern: /\d+[dhms]\b/,
|
|
48
|
+
});
|
|
49
|
+
// Size literal (e.g., 64mb, 1gb)
|
|
50
|
+
export const SizeLiteral = createToken({
|
|
51
|
+
name: 'SizeLiteral',
|
|
52
|
+
pattern: /\d+(?:kb|mb|gb)\b/i,
|
|
53
|
+
});
|
|
54
|
+
// Rate limit literal (e.g., 10/minute, 100/hour)
|
|
55
|
+
export const RateLimitLiteral = createToken({
|
|
56
|
+
name: 'RateLimitLiteral',
|
|
57
|
+
pattern: /\d+\/(?:second|minute|hour|day)\b/,
|
|
58
|
+
});
|
|
59
|
+
// CSS unit value (e.g., 0.5rem, 4px)
|
|
60
|
+
export const CSSValueLiteral = createToken({
|
|
61
|
+
name: 'CSSValueLiteral',
|
|
62
|
+
pattern: /\d+(?:\.\d+)?(?:rem|em|px|%)/,
|
|
63
|
+
});
|
|
64
|
+
// Decimal number
|
|
65
|
+
export const DecimalLiteral = createToken({
|
|
66
|
+
name: 'DecimalLiteral',
|
|
67
|
+
pattern: /\d+\.\d+/,
|
|
68
|
+
});
|
|
69
|
+
// Integer number
|
|
70
|
+
export const IntegerLiteral = createToken({
|
|
71
|
+
name: 'IntegerLiteral',
|
|
72
|
+
pattern: /\d+/,
|
|
73
|
+
});
|
|
74
|
+
// =============================================================================
|
|
75
|
+
// Operators (before keywords)
|
|
76
|
+
// =============================================================================
|
|
77
|
+
// Effect arrow: -[DB, Auth]->
|
|
78
|
+
export const EffectArrowStart = createToken({
|
|
79
|
+
name: 'EffectArrowStart',
|
|
80
|
+
pattern: /-\[/,
|
|
81
|
+
});
|
|
82
|
+
export const EffectArrowEnd = createToken({
|
|
83
|
+
name: 'EffectArrowEnd',
|
|
84
|
+
pattern: /\]->/,
|
|
85
|
+
});
|
|
86
|
+
// Simple arrow: ->
|
|
87
|
+
export const Arrow = createToken({
|
|
88
|
+
name: 'Arrow',
|
|
89
|
+
pattern: /->/,
|
|
90
|
+
});
|
|
91
|
+
// Range operator: ..
|
|
92
|
+
export const Range = createToken({
|
|
93
|
+
name: 'Range',
|
|
94
|
+
pattern: /\.\./,
|
|
95
|
+
});
|
|
96
|
+
// Alias for range in constraints
|
|
97
|
+
export const DotDot = Range;
|
|
98
|
+
// =============================================================================
|
|
99
|
+
// Multi-word Keywords (before their shorter prefixes)
|
|
100
|
+
// =============================================================================
|
|
101
|
+
export const TanstackStart = createToken({ name: 'TanstackStart', pattern: /tanstack-start\b/ });
|
|
102
|
+
export const TailwindOnly = createToken({ name: 'TailwindOnly', pattern: /tailwind-only\b/ });
|
|
103
|
+
export const DefaultComposition = createToken({ name: 'DefaultComposition', pattern: /default_composition\b/ });
|
|
104
|
+
export const FontFamily = createToken({ name: 'FontFamily', pattern: /font_family\b/ });
|
|
105
|
+
export const FontMono = createToken({ name: 'FontMono', pattern: /font_mono\b/ });
|
|
106
|
+
export const HasMany = createToken({ name: 'HasMany', pattern: /has_many\b/ });
|
|
107
|
+
export const HasOne = createToken({ name: 'HasOne', pattern: /has_one\b/ });
|
|
108
|
+
export const BelongsTo = createToken({ name: 'BelongsTo', pattern: /belongs_to\b/ });
|
|
109
|
+
export const ManyToMany = createToken({ name: 'ManyToMany', pattern: /many_to_many\b/ });
|
|
110
|
+
export const OnCreate = createToken({ name: 'OnCreate', pattern: /on_create\b/ });
|
|
111
|
+
export const OnUpdate = createToken({ name: 'OnUpdate', pattern: /on_update\b/ });
|
|
112
|
+
export const OnDelete = createToken({ name: 'OnDelete', pattern: /on_delete\b/ });
|
|
113
|
+
export const OnAbandon = createToken({ name: 'OnAbandon', pattern: /on_abandon\b/ });
|
|
114
|
+
export const OnSuccess = createToken({ name: 'OnSuccess', pattern: /on_success\b/ });
|
|
115
|
+
export const OnError = createToken({ name: 'OnError', pattern: /on_error\b/ });
|
|
116
|
+
export const RateLimit = createToken({ name: 'RateLimit', pattern: /rate_limit\b/ });
|
|
117
|
+
export const WaitFor = createToken({ name: 'WaitFor', pattern: /wait_for\b/ });
|
|
118
|
+
export const SkipIf = createToken({ name: 'SkipIf', pattern: /skip_if\b/ });
|
|
119
|
+
export const SendEmail = createToken({ name: 'SendEmail', pattern: /send_email\b/ });
|
|
120
|
+
export const LogAudit = createToken({ name: 'LogAudit', pattern: /log_audit\b/ });
|
|
121
|
+
export const TransferOwnership = createToken({ name: 'TransferOwnership', pattern: /transfer_ownership\b/ });
|
|
122
|
+
export const RequireReverification = createToken({ name: 'RequireReverification', pattern: /require_reverification\b/ });
|
|
123
|
+
// =============================================================================
|
|
124
|
+
// Keywords with longer variants (longer first)
|
|
125
|
+
// =============================================================================
|
|
126
|
+
// Hash group
|
|
127
|
+
export const Hashed = createToken({ name: 'Hashed', pattern: /hashed\b/ });
|
|
128
|
+
export const Hash = createToken({ name: 'Hash', pattern: /hash\b/ });
|
|
129
|
+
// Can group
|
|
130
|
+
export const Cannot = createToken({ name: 'Cannot', pattern: /cannot\b/ });
|
|
131
|
+
export const Can = createToken({ name: 'Can', pattern: /can\b/ });
|
|
132
|
+
// As group
|
|
133
|
+
export const Astro = createToken({ name: 'Astro', pattern: /astro\b/ });
|
|
134
|
+
export const As = createToken({ name: 'As', pattern: /as\b/ });
|
|
135
|
+
// Time group
|
|
136
|
+
export const Timestamp = createToken({ name: 'Timestamp', pattern: /timestamp\b/ });
|
|
137
|
+
export const Timeout = createToken({ name: 'Timeout', pattern: /timeout\b/ });
|
|
138
|
+
export const Time = createToken({ name: 'Time', pattern: /time\b/ });
|
|
139
|
+
// Check group
|
|
140
|
+
export const Checkbox = createToken({ name: 'Checkbox', pattern: /checkbox\b/ });
|
|
141
|
+
export const Check = createToken({ name: 'Check', pattern: /check\b/ });
|
|
142
|
+
// Action group
|
|
143
|
+
export const Actions = createToken({ name: 'Actions', pattern: /actions\b/ });
|
|
144
|
+
export const Action = createToken({ name: 'Action', pattern: /action\b/ });
|
|
145
|
+
// Next group
|
|
146
|
+
export const Nextjs = createToken({ name: 'Nextjs', pattern: /next\b/ }); // Note: 'next' matches Next.js stack
|
|
147
|
+
export const Next = createToken({ name: 'Next', pattern: /next\b/ });
|
|
148
|
+
// Actually these would conflict - let's use different approach
|
|
149
|
+
// Load group
|
|
150
|
+
export const Loading = createToken({ name: 'Loading', pattern: /loading\b/ });
|
|
151
|
+
export const Load = createToken({ name: 'Load', pattern: /load\b/ });
|
|
152
|
+
// Text group
|
|
153
|
+
export const Textarea = createToken({ name: 'Textarea', pattern: /textarea\b/ });
|
|
154
|
+
export const Text = createToken({ name: 'Text', pattern: /text\b/ });
|
|
155
|
+
// Dark group
|
|
156
|
+
export const Darken = createToken({ name: 'Darken', pattern: /darken\b/ });
|
|
157
|
+
export const Dark = createToken({ name: 'Dark', pattern: /dark\b/ });
|
|
158
|
+
// =============================================================================
|
|
159
|
+
// Block Keywords
|
|
160
|
+
// =============================================================================
|
|
161
|
+
export const Project = createToken({ name: 'Project', pattern: /project\b/ });
|
|
162
|
+
export const Entity = createToken({ name: 'Entity', pattern: /entity\b/ });
|
|
163
|
+
export const Auth = createToken({ name: 'Auth', pattern: /auth\b/ });
|
|
164
|
+
export const Api = createToken({ name: 'Api', pattern: /api\b/ });
|
|
165
|
+
export const Journey = createToken({ name: 'Journey', pattern: /journey\b/ });
|
|
166
|
+
export const Page = createToken({ name: 'Page', pattern: /page\b/ });
|
|
167
|
+
export const Component = createToken({ name: 'Component', pattern: /component\b/ });
|
|
168
|
+
export const Form = createToken({ name: 'Form', pattern: /form\b/ });
|
|
169
|
+
export const Design = createToken({ name: 'Design', pattern: /design\b/ });
|
|
170
|
+
// =============================================================================
|
|
171
|
+
// Auth Keywords
|
|
172
|
+
// =============================================================================
|
|
173
|
+
export const Jwt = createToken({ name: 'Jwt', pattern: /jwt\b/ });
|
|
174
|
+
export const Session = createToken({ name: 'Session', pattern: /session\b/ });
|
|
175
|
+
export const Oauth = createToken({ name: 'Oauth', pattern: /oauth\b/ });
|
|
176
|
+
export const Secret = createToken({ name: 'Secret', pattern: /secret\b/ });
|
|
177
|
+
export const Issuer = createToken({ name: 'Issuer', pattern: /issuer\b/ });
|
|
178
|
+
export const Audience = createToken({ name: 'Audience', pattern: /audience\b/ });
|
|
179
|
+
export const Expires = createToken({ name: 'Expires', pattern: /expires\b/ });
|
|
180
|
+
export const Refresh = createToken({ name: 'Refresh', pattern: /refresh\b/ });
|
|
181
|
+
export const Argon2id = createToken({ name: 'Argon2id', pattern: /argon2id\b/ });
|
|
182
|
+
export const Bcrypt = createToken({ name: 'Bcrypt', pattern: /bcrypt\b/ });
|
|
183
|
+
export const Memory = createToken({ name: 'Memory', pattern: /memory\b/ });
|
|
184
|
+
export const Iterations = createToken({ name: 'Iterations', pattern: /iterations\b/ });
|
|
185
|
+
export const Parallelism = createToken({ name: 'Parallelism', pattern: /parallelism\b/ });
|
|
186
|
+
export const Rounds = createToken({ name: 'Rounds', pattern: /rounds\b/ });
|
|
187
|
+
// =============================================================================
|
|
188
|
+
// Entity Keywords
|
|
189
|
+
// =============================================================================
|
|
190
|
+
export const Through = createToken({ name: 'Through', pattern: /through\b/ });
|
|
191
|
+
export const Cascade = createToken({ name: 'Cascade', pattern: /cascade\b/ });
|
|
192
|
+
export const Where = createToken({ name: 'Where', pattern: /where\b/ });
|
|
193
|
+
export const Unless = createToken({ name: 'Unless', pattern: /unless\b/ });
|
|
194
|
+
export const To = createToken({ name: 'To', pattern: /to\b/ });
|
|
195
|
+
export const Index = createToken({ name: 'Index', pattern: /index\b/ });
|
|
196
|
+
// =============================================================================
|
|
197
|
+
// Field Modifiers
|
|
198
|
+
// =============================================================================
|
|
199
|
+
export const Primary = createToken({ name: 'Primary', pattern: /primary\b/ });
|
|
200
|
+
export const Unique = createToken({ name: 'Unique', pattern: /unique\b/ });
|
|
201
|
+
export const Auto = createToken({ name: 'Auto', pattern: /auto\b/ });
|
|
202
|
+
export const Immutable = createToken({ name: 'Immutable', pattern: /immutable\b/ });
|
|
203
|
+
export const Internal = createToken({ name: 'Internal', pattern: /internal\b/ });
|
|
204
|
+
export const Optional = createToken({ name: 'Optional', pattern: /optional\b/ });
|
|
205
|
+
// =============================================================================
|
|
206
|
+
// Type Keywords
|
|
207
|
+
// =============================================================================
|
|
208
|
+
export const String = createToken({ name: 'String', pattern: /string\b/ });
|
|
209
|
+
export const Int = createToken({ name: 'Int', pattern: /int\b/ });
|
|
210
|
+
export const Float = createToken({ name: 'Float', pattern: /float\b/ });
|
|
211
|
+
export const Bool = createToken({ name: 'Bool', pattern: /bool\b/ });
|
|
212
|
+
export const Email = createToken({ name: 'Email', pattern: /email\b/ });
|
|
213
|
+
export const Url = createToken({ name: 'Url', pattern: /url\b/ });
|
|
214
|
+
export const Uuid = createToken({ name: 'Uuid', pattern: /uuid\b/ });
|
|
215
|
+
export const Phone = createToken({ name: 'Phone', pattern: /phone\b/ });
|
|
216
|
+
export const Slug = createToken({ name: 'Slug', pattern: /slug\b/ });
|
|
217
|
+
export const Markdown = createToken({ name: 'Markdown', pattern: /markdown\b/ });
|
|
218
|
+
export const Json = createToken({ name: 'Json', pattern: /json\b/ });
|
|
219
|
+
export const Date = createToken({ name: 'Date', pattern: /date\b/ });
|
|
220
|
+
export const Duration = createToken({ name: 'Duration', pattern: /duration\b/ });
|
|
221
|
+
export const Void = createToken({ name: 'Void', pattern: /void\b/ });
|
|
222
|
+
// =============================================================================
|
|
223
|
+
// API Keywords
|
|
224
|
+
// =============================================================================
|
|
225
|
+
export const Crud = createToken({ name: 'Crud', pattern: /crud\b/ });
|
|
226
|
+
export const Throws = createToken({ name: 'Throws', pattern: /throws\b/ });
|
|
227
|
+
export const Audit = createToken({ name: 'Audit', pattern: /audit\b/ });
|
|
228
|
+
export const Cache = createToken({ name: 'Cache', pattern: /cache\b/ });
|
|
229
|
+
export const Deprecated = createToken({ name: 'Deprecated', pattern: /deprecated\b/ });
|
|
230
|
+
export const Filter = createToken({ name: 'Filter', pattern: /filter\b/ });
|
|
231
|
+
export const Scope = createToken({ name: 'Scope', pattern: /scope\b/ });
|
|
232
|
+
export const Always = createToken({ name: 'Always', pattern: /always\b/ });
|
|
233
|
+
export const Never = createToken({ name: 'Never', pattern: /never\b/ });
|
|
234
|
+
// =============================================================================
|
|
235
|
+
// Effect Keywords (PascalCase - special handling)
|
|
236
|
+
// =============================================================================
|
|
237
|
+
export const DB = createToken({ name: 'DB', pattern: /DB\b/ });
|
|
238
|
+
export const AuthEffect = createToken({ name: 'AuthEffect', pattern: /Auth\b/ });
|
|
239
|
+
export const EmailEffect = createToken({ name: 'EmailEffect', pattern: /Email\b/ });
|
|
240
|
+
export const ErrorEffect = createToken({ name: 'ErrorEffect', pattern: /Error\b/ });
|
|
241
|
+
export const AuditEffect = createToken({ name: 'AuditEffect', pattern: /Audit\b/ });
|
|
242
|
+
export const Queue = createToken({ name: 'Queue', pattern: /Queue\b/ });
|
|
243
|
+
export const CacheEffect = createToken({ name: 'CacheEffect', pattern: /Cache\b/ });
|
|
244
|
+
export const External = createToken({ name: 'External', pattern: /External\b/ });
|
|
245
|
+
// =============================================================================
|
|
246
|
+
// Journey Keywords
|
|
247
|
+
// =============================================================================
|
|
248
|
+
export const Actor = createToken({ name: 'Actor', pattern: /actor\b/ });
|
|
249
|
+
export const Steps = createToken({ name: 'Steps', pattern: /steps\b/ });
|
|
250
|
+
export const Skippable = createToken({ name: 'Skippable', pattern: /skippable\b/ });
|
|
251
|
+
export const Complete = createToken({ name: 'Complete', pattern: /complete\b/ });
|
|
252
|
+
export const Track = createToken({ name: 'Track', pattern: /track\b/ });
|
|
253
|
+
export const Condition = createToken({ name: 'Condition', pattern: /condition\b/ });
|
|
254
|
+
// =============================================================================
|
|
255
|
+
// Page Keywords
|
|
256
|
+
// =============================================================================
|
|
257
|
+
export const Route = createToken({ name: 'Route', pattern: /route\b/ });
|
|
258
|
+
export const Guard = createToken({ name: 'Guard', pattern: /guard\b/ });
|
|
259
|
+
export const Layout = createToken({ name: 'Layout', pattern: /layout\b/ });
|
|
260
|
+
export const Title = createToken({ name: 'Title', pattern: /title\b/ });
|
|
261
|
+
export const Meta = createToken({ name: 'Meta', pattern: /meta\b/ });
|
|
262
|
+
export const Loader = createToken({ name: 'Loader', pattern: /loader\b/ });
|
|
263
|
+
// =============================================================================
|
|
264
|
+
// Component Keywords
|
|
265
|
+
// =============================================================================
|
|
266
|
+
export const Props = createToken({ name: 'Props', pattern: /props\b/ });
|
|
267
|
+
export const Structure = createToken({ name: 'Structure', pattern: /structure\b/ });
|
|
268
|
+
export const Variants = createToken({ name: 'Variants', pattern: /variants\b/ });
|
|
269
|
+
export const Compound = createToken({ name: 'Compound', pattern: /compound\b/ });
|
|
270
|
+
export const State = createToken({ name: 'State', pattern: /state\b/ });
|
|
271
|
+
export const Handlers = createToken({ name: 'Handlers', pattern: /handlers\b/ });
|
|
272
|
+
// =============================================================================
|
|
273
|
+
// Form Keywords
|
|
274
|
+
// =============================================================================
|
|
275
|
+
export const Fields = createToken({ name: 'Fields', pattern: /fields\b/ });
|
|
276
|
+
export const Submit = createToken({ name: 'Submit', pattern: /submit\b/ });
|
|
277
|
+
export const Label = createToken({ name: 'Label', pattern: /label\b/ });
|
|
278
|
+
export const Placeholder = createToken({ name: 'Placeholder', pattern: /placeholder\b/ });
|
|
279
|
+
export const Validation = createToken({ name: 'Validation', pattern: /validation\b/ });
|
|
280
|
+
export const Validate = createToken({ name: 'Validate', pattern: /validate\b/ });
|
|
281
|
+
export const Required = createToken({ name: 'Required', pattern: /required\b/ });
|
|
282
|
+
export const Options = createToken({ name: 'Options', pattern: /options\b/ });
|
|
283
|
+
export const From = createToken({ name: 'From', pattern: /from\b/ });
|
|
284
|
+
export const Button = createToken({ name: 'Button', pattern: /button\b/ });
|
|
285
|
+
export const Row = createToken({ name: 'Row', pattern: /row\b/ });
|
|
286
|
+
export const Columns = createToken({ name: 'Columns', pattern: /columns\b/ });
|
|
287
|
+
export const Rows = createToken({ name: 'Rows', pattern: /rows\b/ });
|
|
288
|
+
// Form field types
|
|
289
|
+
export const Password = createToken({ name: 'Password', pattern: /password\b/ });
|
|
290
|
+
export const Number = createToken({ name: 'Number', pattern: /number\b/ });
|
|
291
|
+
export const Select = createToken({ name: 'Select', pattern: /select\b/ });
|
|
292
|
+
export const Multiselect = createToken({ name: 'Multiselect', pattern: /multiselect\b/ });
|
|
293
|
+
export const Radio = createToken({ name: 'Radio', pattern: /radio\b/ });
|
|
294
|
+
export const File = createToken({ name: 'File', pattern: /file\b/ });
|
|
295
|
+
// =============================================================================
|
|
296
|
+
// Design Keywords
|
|
297
|
+
// =============================================================================
|
|
298
|
+
export const Colors = createToken({ name: 'Colors', pattern: /colors\b/ });
|
|
299
|
+
export const Typography = createToken({ name: 'Typography', pattern: /typography\b/ });
|
|
300
|
+
export const Scale = createToken({ name: 'Scale', pattern: /scale\b/ });
|
|
301
|
+
export const Weight = createToken({ name: 'Weight', pattern: /weight\b/ });
|
|
302
|
+
export const Spacing = createToken({ name: 'Spacing', pattern: /spacing\b/ });
|
|
303
|
+
export const Unit = createToken({ name: 'Unit', pattern: /unit\b/ });
|
|
304
|
+
export const Borders = createToken({ name: 'Borders', pattern: /borders\b/ });
|
|
305
|
+
export const Radius = createToken({ name: 'Radius', pattern: /radius\b/ });
|
|
306
|
+
export const Width = createToken({ name: 'Width', pattern: /width\b/ });
|
|
307
|
+
export const Color = createToken({ name: 'Color', pattern: /color\b/ });
|
|
308
|
+
export const Shadows = createToken({ name: 'Shadows', pattern: /shadows\b/ });
|
|
309
|
+
export const Motion = createToken({ name: 'Motion', pattern: /motion\b/ });
|
|
310
|
+
export const Easing = createToken({ name: 'Easing', pattern: /easing\b/ });
|
|
311
|
+
export const Lighten = createToken({ name: 'Lighten', pattern: /lighten\b/ });
|
|
312
|
+
export const Alpha = createToken({ name: 'Alpha', pattern: /alpha\b/ });
|
|
313
|
+
export const Animation = createToken({ name: 'Animation', pattern: /animation\b/ });
|
|
314
|
+
// =============================================================================
|
|
315
|
+
// Project Keywords
|
|
316
|
+
// =============================================================================
|
|
317
|
+
export const Version = createToken({ name: 'Version', pattern: /version\b/ });
|
|
318
|
+
export const Stack = createToken({ name: 'Stack', pattern: /stack\b/ });
|
|
319
|
+
export const Database = createToken({ name: 'Database', pattern: /database\b/ });
|
|
320
|
+
export const Ui = createToken({ name: 'Ui', pattern: /ui\b/ });
|
|
321
|
+
// Stack values
|
|
322
|
+
export const Remix = createToken({ name: 'Remix', pattern: /remix\b/ });
|
|
323
|
+
export const Sveltekit = createToken({ name: 'Sveltekit', pattern: /sveltekit\b/ });
|
|
324
|
+
export const Express = createToken({ name: 'Express', pattern: /express\b/ });
|
|
325
|
+
export const Hono = createToken({ name: 'Hono', pattern: /hono\b/ });
|
|
326
|
+
export const Elysia = createToken({ name: 'Elysia', pattern: /elysia\b/ });
|
|
327
|
+
// Database values
|
|
328
|
+
export const Postgres = createToken({ name: 'Postgres', pattern: /postgres\b/ });
|
|
329
|
+
export const Mysql = createToken({ name: 'Mysql', pattern: /mysql\b/ });
|
|
330
|
+
export const Sqlite = createToken({ name: 'Sqlite', pattern: /sqlite\b/ });
|
|
331
|
+
export const Turso = createToken({ name: 'Turso', pattern: /turso\b/ });
|
|
332
|
+
export const Mongodb = createToken({ name: 'Mongodb', pattern: /mongodb\b/ });
|
|
333
|
+
// UI values
|
|
334
|
+
export const Shadcn = createToken({ name: 'Shadcn', pattern: /shadcn\b/ });
|
|
335
|
+
export const Mui = createToken({ name: 'Mui', pattern: /mui\b/ });
|
|
336
|
+
export const Chakra = createToken({ name: 'Chakra', pattern: /chakra\b/ });
|
|
337
|
+
// =============================================================================
|
|
338
|
+
// Lifecycle Action Keywords
|
|
339
|
+
// =============================================================================
|
|
340
|
+
export const Enqueue = createToken({ name: 'Enqueue', pattern: /enqueue\b/ });
|
|
341
|
+
export const Anonymize = createToken({ name: 'Anonymize', pattern: /anonymize\b/ });
|
|
342
|
+
export const Template = createToken({ name: 'Template', pattern: /template\b/ });
|
|
343
|
+
export const Job = createToken({ name: 'Job', pattern: /job\b/ });
|
|
344
|
+
export const Notify = createToken({ name: 'Notify', pattern: /notify\b/ });
|
|
345
|
+
export const Webhook = createToken({ name: 'Webhook', pattern: /webhook\b/ });
|
|
346
|
+
// =============================================================================
|
|
347
|
+
// Refresh Strategy Values
|
|
348
|
+
// =============================================================================
|
|
349
|
+
export const Sliding = createToken({ name: 'Sliding', pattern: /sliding\b/ });
|
|
350
|
+
export const Fixed = createToken({ name: 'Fixed', pattern: /fixed\b/ });
|
|
351
|
+
export const None = createToken({ name: 'None', pattern: /none\b/ });
|
|
352
|
+
// =============================================================================
|
|
353
|
+
// Cascade Values
|
|
354
|
+
// =============================================================================
|
|
355
|
+
export const Delete = createToken({ name: 'Delete', pattern: /delete\b/ });
|
|
356
|
+
export const Nullify = createToken({ name: 'Nullify', pattern: /nullify\b/ });
|
|
357
|
+
export const Restrict = createToken({ name: 'Restrict', pattern: /restrict\b/ });
|
|
358
|
+
// =============================================================================
|
|
359
|
+
// Capability Actions
|
|
360
|
+
// =============================================================================
|
|
361
|
+
export const Create = createToken({ name: 'Create', pattern: /create\b/ });
|
|
362
|
+
export const Read = createToken({ name: 'Read', pattern: /read\b/ });
|
|
363
|
+
export const Update = createToken({ name: 'Update', pattern: /update\b/ });
|
|
364
|
+
export const Invite = createToken({ name: 'Invite', pattern: /invite\b/ });
|
|
365
|
+
export const List = createToken({ name: 'List', pattern: /list\b/ });
|
|
366
|
+
// =============================================================================
|
|
367
|
+
// Boolean Literals
|
|
368
|
+
// =============================================================================
|
|
369
|
+
export const True = createToken({ name: 'True', pattern: /true\b/ });
|
|
370
|
+
export const False = createToken({ name: 'False', pattern: /false\b/ });
|
|
371
|
+
// =============================================================================
|
|
372
|
+
// Env Function
|
|
373
|
+
// =============================================================================
|
|
374
|
+
export const Env = createToken({ name: 'Env', pattern: /env\b/ });
|
|
375
|
+
// =============================================================================
|
|
376
|
+
// Identifiers
|
|
377
|
+
// =============================================================================
|
|
378
|
+
// Pascal case identifier (for entity/type names)
|
|
379
|
+
export const PascalIdentifier = createToken({
|
|
380
|
+
name: 'PascalIdentifier',
|
|
381
|
+
pattern: /[A-Z][a-zA-Z0-9]*/,
|
|
382
|
+
});
|
|
383
|
+
// Camel/snake case identifier (for field names, etc.)
|
|
384
|
+
export const Identifier = createToken({
|
|
385
|
+
name: 'Identifier',
|
|
386
|
+
pattern: /[a-z_][a-zA-Z0-9_]*/,
|
|
387
|
+
});
|
|
388
|
+
// SCREAMING_SNAKE_CASE identifier (for environment variables, etc.)
|
|
389
|
+
// Must have 2+ uppercase letters OR contain underscore (to avoid matching single letters like U from User)
|
|
390
|
+
export const ConstantIdentifier = createToken({
|
|
391
|
+
name: 'ConstantIdentifier',
|
|
392
|
+
pattern: /([A-Z]{2,}[A-Z0-9_]*|[A-Z][A-Z0-9]*_[A-Z0-9_]*)/,
|
|
393
|
+
});
|
|
394
|
+
// =============================================================================
|
|
395
|
+
// Punctuation
|
|
396
|
+
// =============================================================================
|
|
397
|
+
export const LBrace = createToken({ name: 'LBrace', pattern: /{/ });
|
|
398
|
+
export const RBrace = createToken({ name: 'RBrace', pattern: /}/ });
|
|
399
|
+
export const LParen = createToken({ name: 'LParen', pattern: /\(/ });
|
|
400
|
+
export const RParen = createToken({ name: 'RParen', pattern: /\)/ });
|
|
401
|
+
export const LBracket = createToken({ name: 'LBracket', pattern: /\[/ });
|
|
402
|
+
export const RBracket = createToken({ name: 'RBracket', pattern: /]/ });
|
|
403
|
+
export const Colon = createToken({ name: 'Colon', pattern: /:/ });
|
|
404
|
+
export const Comma = createToken({ name: 'Comma', pattern: /,/ });
|
|
405
|
+
export const Dot = createToken({ name: 'Dot', pattern: /\./ });
|
|
406
|
+
export const Pipe = createToken({ name: 'Pipe', pattern: /\|/ });
|
|
407
|
+
export const Ampersand = createToken({ name: 'Ampersand', pattern: /&/ });
|
|
408
|
+
export const Question = createToken({ name: 'Question', pattern: /\?/ });
|
|
409
|
+
export const Equals = createToken({ name: 'Equals', pattern: /=/ });
|
|
410
|
+
export const At = createToken({ name: 'At', pattern: /@/ });
|
|
411
|
+
// =============================================================================
|
|
412
|
+
// Token Order
|
|
413
|
+
// =============================================================================
|
|
414
|
+
// IMPORTANT: Order matters! Longer/more specific patterns must come first.
|
|
415
|
+
// All keyword patterns use \b word boundary to prevent partial matching.
|
|
416
|
+
export const allTokens = [
|
|
417
|
+
// Whitespace and comments first
|
|
418
|
+
WhiteSpace,
|
|
419
|
+
LineComment,
|
|
420
|
+
// Multi-character operators
|
|
421
|
+
EffectArrowStart,
|
|
422
|
+
EffectArrowEnd,
|
|
423
|
+
Arrow,
|
|
424
|
+
Range,
|
|
425
|
+
// Literals (before keywords)
|
|
426
|
+
StringLiteral,
|
|
427
|
+
HexColor,
|
|
428
|
+
CSSFunctionLiteral,
|
|
429
|
+
DurationLiteral,
|
|
430
|
+
SizeLiteral,
|
|
431
|
+
RateLimitLiteral,
|
|
432
|
+
CSSValueLiteral,
|
|
433
|
+
DecimalLiteral,
|
|
434
|
+
IntegerLiteral,
|
|
435
|
+
// Multi-word compound keywords (before their components)
|
|
436
|
+
TanstackStart,
|
|
437
|
+
TailwindOnly,
|
|
438
|
+
DefaultComposition,
|
|
439
|
+
FontFamily,
|
|
440
|
+
FontMono,
|
|
441
|
+
HasMany,
|
|
442
|
+
HasOne,
|
|
443
|
+
BelongsTo,
|
|
444
|
+
ManyToMany,
|
|
445
|
+
OnCreate,
|
|
446
|
+
OnUpdate,
|
|
447
|
+
OnDelete,
|
|
448
|
+
OnAbandon,
|
|
449
|
+
OnSuccess,
|
|
450
|
+
OnError,
|
|
451
|
+
RateLimit,
|
|
452
|
+
WaitFor,
|
|
453
|
+
SkipIf,
|
|
454
|
+
SendEmail,
|
|
455
|
+
LogAudit,
|
|
456
|
+
TransferOwnership,
|
|
457
|
+
RequireReverification,
|
|
458
|
+
// Keywords with longer variants (longer first to avoid conflicts)
|
|
459
|
+
Timestamp,
|
|
460
|
+
Timeout,
|
|
461
|
+
Textarea,
|
|
462
|
+
Checkbox,
|
|
463
|
+
Multiselect,
|
|
464
|
+
Sveltekit,
|
|
465
|
+
Argon2id,
|
|
466
|
+
Hashed,
|
|
467
|
+
Cannot,
|
|
468
|
+
Astro,
|
|
469
|
+
Actions,
|
|
470
|
+
Loading,
|
|
471
|
+
Darken,
|
|
472
|
+
// Effect keywords (PascalCase)
|
|
473
|
+
DB,
|
|
474
|
+
AuthEffect,
|
|
475
|
+
EmailEffect,
|
|
476
|
+
ErrorEffect,
|
|
477
|
+
AuditEffect,
|
|
478
|
+
Queue,
|
|
479
|
+
CacheEffect,
|
|
480
|
+
External,
|
|
481
|
+
// Block keywords
|
|
482
|
+
Project,
|
|
483
|
+
Entity,
|
|
484
|
+
Auth,
|
|
485
|
+
Api,
|
|
486
|
+
Journey,
|
|
487
|
+
Page,
|
|
488
|
+
Component,
|
|
489
|
+
Form,
|
|
490
|
+
Design,
|
|
491
|
+
// Auth keywords
|
|
492
|
+
Jwt,
|
|
493
|
+
Session,
|
|
494
|
+
Oauth,
|
|
495
|
+
Secret,
|
|
496
|
+
Issuer,
|
|
497
|
+
Audience,
|
|
498
|
+
Expires,
|
|
499
|
+
Refresh,
|
|
500
|
+
Hash,
|
|
501
|
+
Bcrypt,
|
|
502
|
+
Memory,
|
|
503
|
+
Iterations,
|
|
504
|
+
Parallelism,
|
|
505
|
+
Rounds,
|
|
506
|
+
Sliding,
|
|
507
|
+
Fixed,
|
|
508
|
+
None,
|
|
509
|
+
// Entity keywords
|
|
510
|
+
Through,
|
|
511
|
+
Cascade,
|
|
512
|
+
Can,
|
|
513
|
+
Where,
|
|
514
|
+
Unless,
|
|
515
|
+
To,
|
|
516
|
+
As,
|
|
517
|
+
Index,
|
|
518
|
+
// Field modifiers
|
|
519
|
+
Primary,
|
|
520
|
+
Unique,
|
|
521
|
+
Auto,
|
|
522
|
+
Immutable,
|
|
523
|
+
Internal,
|
|
524
|
+
Optional,
|
|
525
|
+
// Type keywords
|
|
526
|
+
String,
|
|
527
|
+
Int,
|
|
528
|
+
Float,
|
|
529
|
+
Bool,
|
|
530
|
+
Email,
|
|
531
|
+
Url,
|
|
532
|
+
Uuid,
|
|
533
|
+
Phone,
|
|
534
|
+
Slug,
|
|
535
|
+
Markdown,
|
|
536
|
+
Json,
|
|
537
|
+
Time,
|
|
538
|
+
Date,
|
|
539
|
+
Duration,
|
|
540
|
+
Void,
|
|
541
|
+
// API keywords
|
|
542
|
+
Crud,
|
|
543
|
+
Throws,
|
|
544
|
+
Check,
|
|
545
|
+
Audit,
|
|
546
|
+
Cache,
|
|
547
|
+
Deprecated,
|
|
548
|
+
Filter,
|
|
549
|
+
Scope,
|
|
550
|
+
Always,
|
|
551
|
+
Never,
|
|
552
|
+
// Journey keywords
|
|
553
|
+
Actor,
|
|
554
|
+
Steps,
|
|
555
|
+
Action,
|
|
556
|
+
Next,
|
|
557
|
+
Skippable,
|
|
558
|
+
Complete,
|
|
559
|
+
Track,
|
|
560
|
+
Condition,
|
|
561
|
+
// Page keywords
|
|
562
|
+
Route,
|
|
563
|
+
Guard,
|
|
564
|
+
Loader,
|
|
565
|
+
Load,
|
|
566
|
+
Layout,
|
|
567
|
+
Title,
|
|
568
|
+
Meta,
|
|
569
|
+
// Component keywords
|
|
570
|
+
Props,
|
|
571
|
+
Structure,
|
|
572
|
+
Variants,
|
|
573
|
+
Compound,
|
|
574
|
+
State,
|
|
575
|
+
Handlers,
|
|
576
|
+
// Form keywords
|
|
577
|
+
Fields,
|
|
578
|
+
Submit,
|
|
579
|
+
Label,
|
|
580
|
+
Placeholder,
|
|
581
|
+
Validation,
|
|
582
|
+
Validate,
|
|
583
|
+
Required,
|
|
584
|
+
Options,
|
|
585
|
+
From,
|
|
586
|
+
Button,
|
|
587
|
+
Loading,
|
|
588
|
+
Row,
|
|
589
|
+
Rows,
|
|
590
|
+
Columns,
|
|
591
|
+
Text,
|
|
592
|
+
Password,
|
|
593
|
+
Number,
|
|
594
|
+
Select,
|
|
595
|
+
Radio,
|
|
596
|
+
File,
|
|
597
|
+
// Design keywords
|
|
598
|
+
Colors,
|
|
599
|
+
Dark,
|
|
600
|
+
Typography,
|
|
601
|
+
Scale,
|
|
602
|
+
Weight,
|
|
603
|
+
Spacing,
|
|
604
|
+
Unit,
|
|
605
|
+
Borders,
|
|
606
|
+
Radius,
|
|
607
|
+
Width,
|
|
608
|
+
Color,
|
|
609
|
+
Shadows,
|
|
610
|
+
Motion,
|
|
611
|
+
Easing,
|
|
612
|
+
Lighten,
|
|
613
|
+
Alpha,
|
|
614
|
+
Animation,
|
|
615
|
+
// Project keywords
|
|
616
|
+
Version,
|
|
617
|
+
Stack,
|
|
618
|
+
Database,
|
|
619
|
+
Ui,
|
|
620
|
+
// Stack values
|
|
621
|
+
Remix,
|
|
622
|
+
Express,
|
|
623
|
+
Hono,
|
|
624
|
+
Elysia,
|
|
625
|
+
// Database values
|
|
626
|
+
Postgres,
|
|
627
|
+
Mysql,
|
|
628
|
+
Sqlite,
|
|
629
|
+
Turso,
|
|
630
|
+
Mongodb,
|
|
631
|
+
// UI values
|
|
632
|
+
Shadcn,
|
|
633
|
+
Mui,
|
|
634
|
+
Chakra,
|
|
635
|
+
// Lifecycle actions
|
|
636
|
+
Enqueue,
|
|
637
|
+
Anonymize,
|
|
638
|
+
Template,
|
|
639
|
+
Job,
|
|
640
|
+
Notify,
|
|
641
|
+
Webhook,
|
|
642
|
+
// Cascade values
|
|
643
|
+
Delete,
|
|
644
|
+
Nullify,
|
|
645
|
+
Restrict,
|
|
646
|
+
// Capability actions
|
|
647
|
+
Create,
|
|
648
|
+
Read,
|
|
649
|
+
Update,
|
|
650
|
+
Invite,
|
|
651
|
+
List,
|
|
652
|
+
// Boolean literals
|
|
653
|
+
True,
|
|
654
|
+
False,
|
|
655
|
+
// Env function
|
|
656
|
+
Env,
|
|
657
|
+
// Identifiers (last - catch-all)
|
|
658
|
+
ConstantIdentifier, // Before PascalIdentifier for SCREAMING_SNAKE_CASE matching
|
|
659
|
+
PascalIdentifier,
|
|
660
|
+
Identifier,
|
|
661
|
+
// Punctuation
|
|
662
|
+
LBrace,
|
|
663
|
+
RBrace,
|
|
664
|
+
LParen,
|
|
665
|
+
RParen,
|
|
666
|
+
LBracket,
|
|
667
|
+
RBracket,
|
|
668
|
+
Colon,
|
|
669
|
+
Comma,
|
|
670
|
+
Dot,
|
|
671
|
+
Pipe,
|
|
672
|
+
Ampersand,
|
|
673
|
+
Question,
|
|
674
|
+
Equals,
|
|
675
|
+
At,
|
|
676
|
+
];
|
|
677
|
+
// =============================================================================
|
|
678
|
+
// Lexer Instance
|
|
679
|
+
// =============================================================================
|
|
680
|
+
export const KappaLexer = new Lexer(allTokens);
|
|
681
|
+
/**
|
|
682
|
+
* Tokenize Kappa source code
|
|
683
|
+
*/
|
|
684
|
+
export function tokenize(source) {
|
|
685
|
+
const result = KappaLexer.tokenize(source);
|
|
686
|
+
if (result.errors.length > 0) {
|
|
687
|
+
const errors = result.errors.map(err => ({
|
|
688
|
+
message: err.message,
|
|
689
|
+
line: err.line,
|
|
690
|
+
column: err.column,
|
|
691
|
+
length: err.length,
|
|
692
|
+
}));
|
|
693
|
+
return { success: false, errors, tokens: result.tokens };
|
|
694
|
+
}
|
|
695
|
+
return { success: true, tokens: result.tokens, errors: [] };
|
|
696
|
+
}
|
|
697
|
+
// =============================================================================
|
|
698
|
+
// Token Groups for Parser
|
|
699
|
+
// =============================================================================
|
|
700
|
+
/**
|
|
701
|
+
* All block-level keywords
|
|
702
|
+
*/
|
|
703
|
+
export const BlockKeywords = [
|
|
704
|
+
Project,
|
|
705
|
+
Entity,
|
|
706
|
+
Auth,
|
|
707
|
+
Api,
|
|
708
|
+
Journey,
|
|
709
|
+
Page,
|
|
710
|
+
Component,
|
|
711
|
+
Form,
|
|
712
|
+
Design,
|
|
713
|
+
];
|
|
714
|
+
/**
|
|
715
|
+
* All type keywords
|
|
716
|
+
*/
|
|
717
|
+
export const TypeKeywords = [
|
|
718
|
+
String,
|
|
719
|
+
Int,
|
|
720
|
+
Float,
|
|
721
|
+
Bool,
|
|
722
|
+
Email,
|
|
723
|
+
Url,
|
|
724
|
+
Uuid,
|
|
725
|
+
Phone,
|
|
726
|
+
Slug,
|
|
727
|
+
Markdown,
|
|
728
|
+
Json,
|
|
729
|
+
Timestamp,
|
|
730
|
+
Date,
|
|
731
|
+
Time,
|
|
732
|
+
Duration,
|
|
733
|
+
Void,
|
|
734
|
+
];
|
|
735
|
+
/**
|
|
736
|
+
* All field modifier keywords
|
|
737
|
+
*/
|
|
738
|
+
export const FieldModifierKeywords = [
|
|
739
|
+
Primary,
|
|
740
|
+
Unique,
|
|
741
|
+
Auto,
|
|
742
|
+
Immutable,
|
|
743
|
+
Internal,
|
|
744
|
+
Hashed,
|
|
745
|
+
];
|
|
746
|
+
/**
|
|
747
|
+
* All effect keywords
|
|
748
|
+
*/
|
|
749
|
+
export const EffectKeywords = [
|
|
750
|
+
DB,
|
|
751
|
+
AuthEffect,
|
|
752
|
+
EmailEffect,
|
|
753
|
+
AuditEffect,
|
|
754
|
+
Queue,
|
|
755
|
+
CacheEffect,
|
|
756
|
+
External,
|
|
757
|
+
];
|