@velarscript/node 0.11.0 → 0.12.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.
Files changed (62) hide show
  1. package/README.md +102 -14
  2. package/dist/compiler.d.ts +3 -0
  3. package/dist/compiler.d.ts.map +1 -1
  4. package/dist/compiler.js +299 -76
  5. package/dist/compiler.js.map +1 -1
  6. package/dist/index.d.ts +1 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +3 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/node-host-runtime.d.ts.map +1 -1
  11. package/dist/node-host-runtime.js +30 -14
  12. package/dist/node-host-runtime.js.map +1 -1
  13. package/dist/node-host-worker-runtime.d.ts.map +1 -1
  14. package/dist/node-host-worker-runtime.js +495 -93
  15. package/dist/node-host-worker-runtime.js.map +1 -1
  16. package/dist/project-config.d.ts +17 -0
  17. package/dist/project-config.d.ts.map +1 -0
  18. package/dist/project-config.js +66 -0
  19. package/dist/project-config.js.map +1 -0
  20. package/dist/serve-runtime.d.ts.map +1 -1
  21. package/dist/serve-runtime.js +2885 -157
  22. package/dist/serve-runtime.js.map +1 -1
  23. package/dist/server-analyzer.d.ts +34 -0
  24. package/dist/server-analyzer.d.ts.map +1 -0
  25. package/dist/server-analyzer.js +659 -0
  26. package/dist/server-analyzer.js.map +1 -0
  27. package/dist/server-ast.d.ts +42 -0
  28. package/dist/server-ast.d.ts.map +1 -0
  29. package/dist/server-ast.js +16 -0
  30. package/dist/server-ast.js.map +1 -0
  31. package/dist/server-emitter.d.ts +16 -0
  32. package/dist/server-emitter.d.ts.map +1 -0
  33. package/dist/server-emitter.js +166 -0
  34. package/dist/server-emitter.js.map +1 -0
  35. package/dist/server-inspection.d.ts +3 -0
  36. package/dist/server-inspection.d.ts.map +1 -0
  37. package/dist/server-inspection.js +12 -0
  38. package/dist/server-inspection.js.map +1 -0
  39. package/dist/server-lexer.d.ts +13 -0
  40. package/dist/server-lexer.d.ts.map +1 -0
  41. package/dist/server-lexer.js +65 -0
  42. package/dist/server-lexer.js.map +1 -0
  43. package/dist/server-parser.d.ts +16 -0
  44. package/dist/server-parser.d.ts.map +1 -0
  45. package/dist/server-parser.js +207 -0
  46. package/dist/server-parser.js.map +1 -0
  47. package/dist/server-semantic.d.ts +3 -0
  48. package/dist/server-semantic.d.ts.map +1 -0
  49. package/dist/server-semantic.js +31 -0
  50. package/dist/server-semantic.js.map +1 -0
  51. package/dist/server-types.d.ts +25 -0
  52. package/dist/server-types.d.ts.map +1 -0
  53. package/dist/server-types.js +60 -0
  54. package/dist/server-types.js.map +1 -0
  55. package/dist/websocket-runtime.d.ts.map +1 -1
  56. package/dist/websocket-runtime.js +169 -15
  57. package/dist/websocket-runtime.js.map +1 -1
  58. package/package.json +10 -2
  59. package/dist/sqlite-runtime.d.ts +0 -3
  60. package/dist/sqlite-runtime.d.ts.map +0 -1
  61. package/dist/sqlite-runtime.js +0 -92
  62. package/dist/sqlite-runtime.js.map +0 -1
@@ -0,0 +1,207 @@
1
+ import { mechanicalFix } from "@velarscript/compiler";
2
+ import { Parser, } from "@velarscript/compiler/extension";
3
+ import { NODE_HTTP_METHODS, } from "./server-ast.js";
4
+ import { isNodePathPatternSyntax, NODE_PATH_PATTERN_TOKEN } from "./server-lexer.js";
5
+ const span = (start, end) => ({ start, end });
6
+ const diagnostic = (code, message, sourceSpan, fix) => fix ? { code, message, span: sourceSpan, fix } : { code, message, span: sourceSpan };
7
+ const methods = new Set(NODE_HTTP_METHODS);
8
+ export class VelarNodeParser extends Parser {
9
+ constructor(tokens, lexicalExtensions) {
10
+ super(tokens, lexicalExtensions);
11
+ }
12
+ createNestedParser(tokens) {
13
+ return new VelarNodeParser(tokens, this.lexicalExtensions);
14
+ }
15
+ parseExtensionStatement(start, modifiers) {
16
+ if (this.serverDeclarationAhead()) {
17
+ this.advance();
18
+ if (modifiers.abstract)
19
+ this.diagnostics.push(diagnostic("VEL6001", "A server is a concrete route table and cannot be abstract", this.previous().span));
20
+ if (modifiers.asynchronous)
21
+ this.diagnostics.push(diagnostic("VEL6001", "A server declaration is static and is not prefixed with 'async'; route bodies already allow await", this.previous().span));
22
+ return this.parseServer(start, modifiers.exported);
23
+ }
24
+ if (this.check("at")) {
25
+ const marker = this.advance();
26
+ const name = this.check("identifier") ? this.advance() : null;
27
+ this.diagnostics.push(diagnostic("VEL6002", name
28
+ ? `Compiler-owned route '@${name.value}' is valid only directly inside a server block`
29
+ : "Expected a compiler-owned route name after '@'; routes are valid only directly inside a server block", span(marker.span.start, (name ?? marker).span.end)));
30
+ this.skipMistypedDeclaration();
31
+ return { kind: "PassStatement", span: span(start, this.previous().span.end) };
32
+ }
33
+ return undefined;
34
+ }
35
+ serverDeclarationAhead() {
36
+ return this.checkWord("server") && this.peekKind(1) === "identifier" && this.peekKind(2) === "colon";
37
+ }
38
+ parseServer(start, exported) {
39
+ const name = this.expect("identifier", "Expected a server name");
40
+ this.expect("colon", "Expected ':' before server routes");
41
+ this.expect("newline", "Expected a newline before server routes");
42
+ this.consumeNewlines();
43
+ this.expect("indent", "Expected an indented server body");
44
+ const items = [];
45
+ this.consumeNewlines();
46
+ while (!this.check("dedent") && !this.check("eof")) {
47
+ const itemStart = this.current().span.start;
48
+ let item = null;
49
+ if (this.check("at"))
50
+ item = this.parseRoute(itemStart);
51
+ else if (this.match("ellipsis")) {
52
+ const value = this.parseExpression();
53
+ item = { kind: "NodeServerSpread", value, span: span(itemStart, value.span.end) };
54
+ }
55
+ else {
56
+ this.diagnostics.push(diagnostic("VEL6003", "A server body contains only @get/@post/@put/@patch/@delete routes or '...app' composition entries; put ordinary declarations outside the server", this.current().span));
57
+ this.skipMistypedDeclaration();
58
+ }
59
+ if (item)
60
+ items.push(item);
61
+ if (this.previous().kind !== "dedent")
62
+ this.expectStatementBoundary();
63
+ this.consumeNewlines();
64
+ }
65
+ const close = this.expect("dedent", "Expected the end of the server body");
66
+ return {
67
+ kind: "ExtensionStatement:node:server",
68
+ exported,
69
+ name: name.value,
70
+ items,
71
+ span: span(start, items.at(-1)?.span.end ?? close.span.end),
72
+ };
73
+ }
74
+ parseRoute(start) {
75
+ const marker = this.expect("at", "Expected '@'");
76
+ const name = this.check("identifier") ? this.advance() : null;
77
+ if (!name || !methods.has(name.value)) {
78
+ this.diagnostics.push(diagnostic("VEL6002", name
79
+ ? `Unknown compiler-owned name '@${name.value}' in a server; use @get, @post, @put, @patch, or @delete`
80
+ : "Expected a compiler-owned server name after '@'; use @get, @post, @put, @patch, or @delete", span(marker.span.start, (name ?? marker).span.end)));
81
+ this.skipMistypedDeclaration();
82
+ return null;
83
+ }
84
+ const methodName = name.value;
85
+ this.expect("leftParen", `Expected '(' after '@${methodName}'`);
86
+ const path = this.check("extensionToken")
87
+ ? this.advance()
88
+ : this.advanceWithPathPatternDiagnostic(methodName);
89
+ const pathSyntax = path.value === NODE_PATH_PATTERN_TOKEN && isNodePathPatternSyntax(path.payload)
90
+ ? path.payload
91
+ : null;
92
+ if (path.kind === "extensionToken" && !pathSyntax) {
93
+ this.diagnostics.push(diagnostic("VEL6005", `The first @${methodName} item must be a p\"/...\" path pattern`, path.span));
94
+ }
95
+ const parameters = pathSyntax ? this.pathParameters(pathSyntax) : [];
96
+ let sawDefault = false;
97
+ if (this.match("comma")) {
98
+ while (!this.check("rightParen") && !this.check("eof")) {
99
+ const parameterStart = this.current().span.start;
100
+ const rest = this.match("ellipsis");
101
+ const parameterName = this.expectBindingName("Expected a route parameter name", "route parameter name");
102
+ const type = this.match("colon") ? this.parseTypeReference() : null;
103
+ const defaultValue = this.match("assign") ? this.parseExpression() : null;
104
+ const parameterSpan = span(parameterStart, defaultValue?.span.end ?? type?.span.end ?? parameterName.span.end);
105
+ if (rest)
106
+ this.diagnostics.push(diagnostic("VEL6004", "Routes have a fixed HTTP input contract and do not support rest parameters", parameterSpan));
107
+ if (!defaultValue && sawDefault) {
108
+ this.diagnostics.push(diagnostic("VEL2016", "A required route parameter cannot follow a parameter with a default value", parameterSpan));
109
+ }
110
+ parameters.push({ name: parameterName.value, type, defaultValue, rest, span: parameterSpan });
111
+ sawDefault ||= defaultValue !== null;
112
+ if (!this.match("comma"))
113
+ break;
114
+ }
115
+ }
116
+ const close = this.expect("rightParen", "Expected ')' after route parameters");
117
+ const parameterListEnd = close.span.end;
118
+ let returnType = null;
119
+ let resultAnnotationSpan;
120
+ let expressionBody = false;
121
+ let body;
122
+ if (this.match("fatArrow")) {
123
+ expressionBody = true;
124
+ const value = this.parseExpression();
125
+ body = [{ kind: "ReturnStatement", value, span: value.span }];
126
+ }
127
+ else {
128
+ if (this.match("arrow")) {
129
+ returnType = this.parseTypeReference();
130
+ resultAnnotationSpan = span(parameterListEnd, returnType.span.end);
131
+ }
132
+ body = this.parseBlock();
133
+ }
134
+ const method = methodName.toUpperCase();
135
+ const end = body.at(-1)?.span.end ?? returnType?.span.end ?? close.span.end;
136
+ return {
137
+ kind: "NodeRouteDeclaration",
138
+ name: `${method} ${pathSyntax?.value ?? ""}`,
139
+ method,
140
+ path: pathSyntax?.value ?? "",
141
+ pathSpan: path.span,
142
+ parameters,
143
+ returnType,
144
+ ...(resultAnnotationSpan ? { resultAnnotationSpan } : {}),
145
+ signatureSpan: span(start, returnType?.span.end ?? close.span.end),
146
+ body,
147
+ expressionBody,
148
+ span: span(start, end),
149
+ };
150
+ }
151
+ advanceWithPathPatternDiagnostic(methodName) {
152
+ const token = this.current();
153
+ this.diagnostics.push(diagnostic("VEL6005", `The first @${methodName} item must be a Node path pattern such as p\"/articles/{id:string}\"`, token.span));
154
+ return this.advance();
155
+ }
156
+ pathParameters(path) {
157
+ const parameters = [];
158
+ let segmentStart = 0;
159
+ for (const segment of path.value.split("/")) {
160
+ const sourceSpan = span(path.contentSpan.start + segmentStart, path.contentSpan.start + segmentStart + segment.length);
161
+ segmentStart += segment.length + 1;
162
+ if (!segment.includes("{") && !segment.includes("}"))
163
+ continue;
164
+ if (!(segment.startsWith("{") && segment.endsWith("}")) || segment.slice(1, -1).includes("{") || segment.slice(1, -1).includes("}")) {
165
+ this.diagnostics.push(diagnostic("VEL6005", "A path capture must occupy one complete segment as '{name:type}'", sourceSpan));
166
+ continue;
167
+ }
168
+ const declaration = segment.slice(1, -1);
169
+ if (declaration.includes(":")) {
170
+ const separatorStart = sourceSpan.start + 1 + declaration.indexOf(":");
171
+ const separatorSpan = span(separatorStart, separatorStart + 1);
172
+ this.diagnostics.push(diagnostic("VEL6005", "A path capture uses the half-width ':' in '{name:type}'", separatorSpan, mechanicalFix(separatorSpan, ":", "Use the half-width ':'")));
173
+ continue;
174
+ }
175
+ const separator = declaration.indexOf(":");
176
+ if (separator <= 0 || separator !== declaration.lastIndexOf(":")) {
177
+ this.diagnostics.push(diagnostic("VEL6005", "A path capture declares its name and type as '{name:type}'", sourceSpan));
178
+ continue;
179
+ }
180
+ const parameterName = declaration.slice(0, separator);
181
+ const typeName = declaration.slice(separator + 1);
182
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/u.test(parameterName)) {
183
+ this.diagnostics.push(diagnostic("VEL6005", `Path capture name '${parameterName}' must be an identifier`, sourceSpan));
184
+ continue;
185
+ }
186
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/u.test(typeName)) {
187
+ this.diagnostics.push(diagnostic("VEL6005", `Path capture '${parameterName}' must use a named scalar type`, sourceSpan));
188
+ continue;
189
+ }
190
+ const nameStart = sourceSpan.start + 1;
191
+ const typeSpan = span(nameStart + separator + 1, sourceSpan.end - 1);
192
+ const type = {
193
+ syntax: { kind: "NamedTypeSyntax", name: typeName, span: typeSpan },
194
+ span: typeSpan,
195
+ };
196
+ parameters.push({
197
+ name: parameterName,
198
+ type,
199
+ defaultValue: null,
200
+ rest: false,
201
+ span: span(nameStart, sourceSpan.end - 1),
202
+ });
203
+ }
204
+ return parameters;
205
+ }
206
+ }
207
+ //# sourceMappingURL=server-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-parser.js","sourceRoot":"","sources":["../src/server-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CompilerSemanticExtension } from "@velarscript/compiler/extension";
2
+ export declare const velarNodeSemanticExtension: CompilerSemanticExtension;
3
+ //# sourceMappingURL=server-semantic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-semantic.d.ts","sourceRoot":"","sources":["../src/server-semantic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EAG1B,MAAM,iCAAiC,CAAC;AAGzC,eAAO,MAAM,0BAA0B,EAAE,yBAuCvC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { isNodeServerStatement } from "./server-ast.js";
2
+ export const velarNodeSemanticExtension = Object.freeze({
3
+ predeclare(statement, context) {
4
+ if (!isNodeServerStatement(statement))
5
+ return false;
6
+ context.declare(statement, statement.name, "extension:variable:node-server", statement.span, context.nameSpan(statement.span, statement.name), { exported: statement.exported });
7
+ return true;
8
+ },
9
+ visitStatement(statement, context) {
10
+ if (!isNodeServerStatement(statement))
11
+ return false;
12
+ for (const item of statement.items) {
13
+ if (item.kind === "NodeServerSpread") {
14
+ context.visitExpression(item.value);
15
+ continue;
16
+ }
17
+ context.enterScope(item.span);
18
+ for (const parameter of item.parameters) {
19
+ if (parameter.defaultValue)
20
+ context.visitExpression(parameter.defaultValue);
21
+ context.typeReferences(parameter.type);
22
+ context.declare(parameter, parameter.name, "parameter", parameter.span, { start: parameter.span.start, end: parameter.span.start + parameter.name.length }, { container: item.name });
23
+ }
24
+ for (const child of item.body)
25
+ context.visitStatement(child);
26
+ context.exitScope();
27
+ }
28
+ return true;
29
+ },
30
+ });
31
+ //# sourceMappingURL=server-semantic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-semantic.js","sourceRoot":"","sources":["../src/server-semantic.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,CAAC,MAAM,0BAA0B,GAA8B,MAAM,CAAC,MAAM,CAAC;IACjF,UAAU,CAAC,SAAoB,EAAE,OAAiC;QAChE,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QACpD,OAAO,CAAC,OAAO,CACb,SAAS,EACT,SAAS,CAAC,IAAI,EACd,gCAAgC,EAChC,SAAS,CAAC,IAAI,EACd,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAChD,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CACjC,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc,CAAC,SAAoB,EAAE,OAAiC;QACpE,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QACpD,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBACrC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpC,SAAS;YACX,CAAC;YACD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxC,IAAI,SAAS,CAAC,YAAY;oBAAE,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;gBAC5E,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACvC,OAAO,CAAC,OAAO,CACb,SAAS,EACT,SAAS,CAAC,IAAI,EACd,WAAW,EACX,SAAS,CAAC,IAAI,EACd,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,EAClF,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,CACzB,CAAC;YACJ,CAAC;YACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC7D,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { ExtensionValueType, ValueType } from "@velarscript/compiler/extension";
2
+ export declare const VELAR_SERVE_APP_IDENTITY = "velar/serve#type:ServeApp";
3
+ export declare const VELAR_SERVE_REQUEST_IDENTITY = "velar/serve#type:ServeRequest";
4
+ export declare const VELAR_NODE_TYPE_EXTENSION_ID = "@velarscript/node";
5
+ export type NodeRouteInputSource = "query" | "header" | "cookie" | "form" | "upload" | "dependency" | "security" | "request";
6
+ export type NodeRouteInputType = ExtensionValueType & {
7
+ readonly extensionId: typeof VELAR_NODE_TYPE_EXTENSION_ID;
8
+ readonly family: "serve-input";
9
+ readonly role: NodeRouteInputSource;
10
+ };
11
+ export type NodeProviderType = ExtensionValueType & {
12
+ readonly extensionId: typeof VELAR_NODE_TYPE_EXTENSION_ID;
13
+ readonly family: "serve-provider";
14
+ readonly role: "provider";
15
+ };
16
+ export declare const serveAppType: ValueType;
17
+ export declare const serveRequestType: ValueType;
18
+ export declare function isServeRequestType(type: ValueType): boolean;
19
+ export declare function nodeRouteInputType(source: NodeRouteInputSource, value: ValueType, metadata?: Readonly<Record<string, string>>): NodeRouteInputType;
20
+ export declare function nodeProviderType(inputs: ValueType, result: ValueType): NodeProviderType;
21
+ export declare function isNodeRouteInputType(type: ValueType): type is NodeRouteInputType;
22
+ export declare function isNodeProviderType(type: ValueType): type is NodeProviderType;
23
+ export declare function nodeRouteInputValue(type: NodeRouteInputType): ValueType;
24
+ export declare function nodeProviderResult(type: NodeProviderType): ValueType;
25
+ //# sourceMappingURL=server-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-types.d.ts","sourceRoot":"","sources":["../src/server-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAErF,eAAO,MAAM,wBAAwB,8BAA8B,CAAC;AACpE,eAAO,MAAM,4BAA4B,kCAAkC,CAAC;AAC5E,eAAO,MAAM,4BAA4B,sBAAsB,CAAC;AAEhE,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC;AAC7H,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,GAAG;IACpD,QAAQ,CAAC,WAAW,EAAE,OAAO,4BAA4B,CAAC;IAC1D,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;CACrC,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG;IAClD,QAAQ,CAAC,WAAW,EAAE,OAAO,4BAA4B,CAAC;IAC1D,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,SAIzB,CAAC;AAEH,eAAO,MAAM,gBAAgB,EAAE,SAI7B,CAAC;AAEH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAG3D;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,oBAAoB,EAC5B,KAAK,EAAE,SAAS,EAChB,QAAQ,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,GAC9C,kBAAkB,CAYpB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,gBAAgB,CAWvF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,IAAI,kBAAkB,CAIhF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,IAAI,gBAAgB,CAK5E;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,SAAS,CAEvE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,SAAS,CAEpE"}
@@ -0,0 +1,60 @@
1
+ export const VELAR_SERVE_APP_IDENTITY = "velar/serve#type:ServeApp";
2
+ export const VELAR_SERVE_REQUEST_IDENTITY = "velar/serve#type:ServeRequest";
3
+ export const VELAR_NODE_TYPE_EXTENSION_ID = "@velarscript/node";
4
+ export const serveAppType = Object.freeze({
5
+ kind: "named",
6
+ name: "ServeApp",
7
+ identity: VELAR_SERVE_APP_IDENTITY,
8
+ });
9
+ export const serveRequestType = Object.freeze({
10
+ kind: "named",
11
+ name: "ServeRequest",
12
+ identity: VELAR_SERVE_REQUEST_IDENTITY,
13
+ });
14
+ export function isServeRequestType(type) {
15
+ return type.kind === "named"
16
+ && (type.identity === VELAR_SERVE_REQUEST_IDENTITY || type.name === "ServeRequest" || type.name === "Request");
17
+ }
18
+ export function nodeRouteInputType(source, value, metadata = {}) {
19
+ return {
20
+ kind: "extension",
21
+ extensionId: VELAR_NODE_TYPE_EXTENSION_ID,
22
+ family: "serve-input",
23
+ role: source,
24
+ properties: new Map(),
25
+ requiredProperties: new Set(),
26
+ arguments: [value],
27
+ metadata,
28
+ display: { kind: "named", name: `input.${source}` },
29
+ };
30
+ }
31
+ export function nodeProviderType(inputs, result) {
32
+ return {
33
+ kind: "extension",
34
+ extensionId: VELAR_NODE_TYPE_EXTENSION_ID,
35
+ family: "serve-provider",
36
+ role: "provider",
37
+ properties: new Map(),
38
+ requiredProperties: new Set(),
39
+ arguments: [inputs, result],
40
+ display: { kind: "named", name: "Provider" },
41
+ };
42
+ }
43
+ export function isNodeRouteInputType(type) {
44
+ return type.kind === "extension"
45
+ && type.extensionId === VELAR_NODE_TYPE_EXTENSION_ID
46
+ && type.family === "serve-input";
47
+ }
48
+ export function isNodeProviderType(type) {
49
+ return type.kind === "extension"
50
+ && type.extensionId === VELAR_NODE_TYPE_EXTENSION_ID
51
+ && type.family === "serve-provider"
52
+ && type.role === "provider";
53
+ }
54
+ export function nodeRouteInputValue(type) {
55
+ return type.arguments[0] ?? { kind: "unknown" };
56
+ }
57
+ export function nodeProviderResult(type) {
58
+ return type.arguments[1] ?? { kind: "unknown" };
59
+ }
60
+ //# sourceMappingURL=server-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-types.js","sourceRoot":"","sources":["../src/server-types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,wBAAwB,GAAG,2BAA2B,CAAC;AACpE,MAAM,CAAC,MAAM,4BAA4B,GAAG,+BAA+B,CAAC;AAC5E,MAAM,CAAC,MAAM,4BAA4B,GAAG,mBAAmB,CAAC;AAchE,MAAM,CAAC,MAAM,YAAY,GAAc,MAAM,CAAC,MAAM,CAAC;IACnD,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,wBAAwB;CACnC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAc,MAAM,CAAC,MAAM,CAAC;IACvD,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,4BAA4B;CACvC,CAAC,CAAC;AAEH,MAAM,UAAU,kBAAkB,CAAC,IAAe;IAChD,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;WACvB,CAAC,IAAI,CAAC,QAAQ,KAAK,4BAA4B,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AACnH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAA4B,EAC5B,KAAgB,EAChB,QAAQ,GAAqC,EAAE;IAE/C,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,4BAA4B;QACzC,MAAM,EAAE,aAAa;QACrB,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,kBAAkB,EAAE,IAAI,GAAG,EAAE;QAC7B,SAAS,EAAE,CAAC,KAAK,CAAC;QAClB,QAAQ;QACR,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE;KACpD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,MAAiB;IACnE,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,4BAA4B;QACzC,MAAM,EAAE,gBAAgB;QACxB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,kBAAkB,EAAE,IAAI,GAAG,EAAE;QAC7B,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;QAC3B,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE;KAC7C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAe;IAClD,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW;WAC3B,IAAI,CAAC,WAAW,KAAK,4BAA4B;WACjD,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAe;IAChD,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW;WAC3B,IAAI,CAAC,WAAW,KAAK,4BAA4B;WACjD,IAAI,CAAC,MAAM,KAAK,gBAAgB;WAChC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAwB;IAC1D,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAsB;IACvD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAClD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"websocket-runtime.d.ts","sourceRoot":"","sources":["../src/websocket-runtime.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,4BAA4B,QA4C5B,CAAC"}
1
+ {"version":3,"file":"websocket-runtime.d.ts","sourceRoot":"","sources":["../src/websocket-runtime.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,4BAA4B,QAsM5B,CAAC"}