restfuncs-transformer 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
- import ts, { MethodDeclaration, Node, ObjectLiteralExpression } from 'typescript';
2
- import { FileTransformRun } from "./transformerUtil";
1
+ import ts, { MethodDeclaration, Node } from 'typescript';
2
+ import { FileTransformRun, TextPatch } from "./transformerUtil";
3
3
  /**
4
4
  * Transformer that adds the following statement to the method body (like in readme.md#how-it-works)
5
5
  * <code><pre>
@@ -9,9 +9,14 @@ import { FileTransformRun } from "./transformerUtil";
9
9
  * </pre></code>
10
10
  */
11
11
  export declare class AddRemoteMethodsMeta extends FileTransformRun {
12
+ /**
13
+ * Should this transformer squeeze the added declarations (result) into one line to keep the line numbers in the source text intact ?
14
+ * Prevents the [broken source maps bug](https://github.com/bogeeee/restfuncs/issues/2)
15
+ */
16
+ static squeezeDeclarationsIntoOneLine: boolean;
12
17
  diagnosis_currentClass_instanceMethodsSeen?: Set<string>;
13
- currentClass_instanceMethodsMeta?: Record<string, ObjectLiteralExpression>;
14
- astWasModified: boolean;
18
+ currentClass_instanceMethodsMeta?: Record<string, string>;
19
+ result: TextPatch;
15
20
  visit(node: Node): Node;
16
21
  /**
17
22
  * Crates the following expression like in readme.md#how-it-works
@@ -20,6 +25,10 @@ export declare class AddRemoteMethodsMeta extends FileTransformRun {
20
25
  * arguments: {
21
26
  * ...
22
27
  * }
28
+ * result: {
29
+ * ...
30
+ * }
31
+ * callbacks:[...]
23
32
  * jsDoc: {
24
33
  * ...
25
34
  * }
@@ -29,7 +38,7 @@ export declare class AddRemoteMethodsMeta extends FileTransformRun {
29
38
  * @param methodName
30
39
  * @private
31
40
  */
32
- createMethodMetaExpression(node: MethodDeclaration, methodName: string): ts.ObjectLiteralExpression;
41
+ createMethodMetaExpression(node: MethodDeclaration, methodName: string): string;
33
42
  /**
34
43
  * Crates the following expression like in readme.md#how-it-works
35
44
  * <code><pre>
@@ -54,7 +63,7 @@ export declare class AddRemoteMethodsMeta extends FileTransformRun {
54
63
  /**
55
64
  * Crates the following expression like in readme.md#how-it-works
56
65
  * <code><pre>
57
- * static getRemoteMethodsMeta() {
66
+ * static getRemoteMethodsMeta(...) :... {
58
67
  * ....
59
68
  * }
60
69
  * </pre></code>
@@ -63,5 +72,14 @@ export declare class AddRemoteMethodsMeta extends FileTransformRun {
63
72
  * @private
64
73
  */
65
74
  private create_static_getRemoteMethodsMeta_expression;
75
+ nodeToString(node: Node, removeComments?: boolean, removeLineBreaks?: boolean): string;
76
+ /**
77
+ * Creates a node, that declares a SourceNodeDiagnosis (defined in ServerSession.ts) object.
78
+ *
79
+ * To output the info at runtime: i.e. "MyServerSessionClass.ts:23:30, reading: async myRemoteMethod(param1:...): Promise<void> {}
80
+ * @param node
81
+ */
82
+ createSourceNodeDiagnosisExpression(node: Node): ts.ObjectLiteralExpression;
83
+ diag_sourceLocation(node: Node): string;
66
84
  }
67
85
  //# sourceMappingURL=AddRemoteMethodsMeta.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AddRemoteMethodsMeta.d.ts","sourceRoot":"","sources":["AddRemoteMethodsMeta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAEP,iBAAiB,EACjB,IAAI,EACJ,uBAAuB,EAG1B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAInD;;;;;;;GAOG;AACH,qBAAa,oBAAqB,SAAQ,gBAAgB;IAEtD,0CAA0C,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzD,gCAAgC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IAC3E,cAAc,UAAS;IAGvB,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAyDvB;;;;;;;;;;;;;;;OAeG;IACH,0BAA0B,CAAC,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM;IAkHtE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,qBAAqB;IA+E7B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,6CAA6C;CA8ExD"}
1
+ {"version":3,"file":"AddRemoteMethodsMeta.d.ts","sourceRoot":"","sources":["AddRemoteMethodsMeta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAGP,iBAAiB,EACjB,IAAI,EAIP,MAAM,YAAY,CAAC;AACpB,OAAO,EAAC,gBAAgB,EAAE,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAK9D;;;;;;;GAOG;AACH,qBAAa,oBAAqB,SAAQ,gBAAgB;IACtD;;;OAGG;IACH,MAAM,CAAC,8BAA8B,UAAQ;IAC7C,0CAA0C,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzD,gCAAgC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,YAAmB;IAGzB,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAiEvB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,0BAA0B,CAAC,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAsL/E;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,qBAAqB;IA+E7B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,6CAA6C;IAgBrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,UAAO,EAAE,gBAAgB,UAAQ,GAAG,MAAM;IASjF;;;;;OAKG;IACH,mCAAmC,CAAC,IAAI,EAAE,IAAI;IAmC9C,mBAAmB,CAAC,IAAI,EAAE,IAAI;CAIjC"}
@@ -27,6 +27,7 @@ exports.AddRemoteMethodsMeta = void 0;
27
27
  const typescript_1 = __importStar(require("typescript"));
28
28
  const transformerUtil_1 = require("./transformerUtil");
29
29
  const index_1 = require("./index");
30
+ const restfuncs_common_1 = require("restfuncs-common");
30
31
  /**
31
32
  * Transformer that adds the following statement to the method body (like in readme.md#how-it-works)
32
33
  * <code><pre>
@@ -38,7 +39,7 @@ const index_1 = require("./index");
38
39
  class AddRemoteMethodsMeta extends transformerUtil_1.FileTransformRun {
39
40
  constructor() {
40
41
  super(...arguments);
41
- this.astWasModified = false;
42
+ this.result = new transformerUtil_1.TextPatch();
42
43
  }
43
44
  /* Visitor Function */
44
45
  visit(node) {
@@ -46,20 +47,20 @@ class AddRemoteMethodsMeta extends transformerUtil_1.FileTransformRun {
46
47
  if (node.kind === typescript_1.SyntaxKind.MethodDeclaration) { // @remote ?
47
48
  const methodDeclaration = node;
48
49
  if (this.getChilds(methodDeclaration).some(n => n.kind == typescript_1.SyntaxKind.StaticKeyword)) { // static ?
49
- return node;
50
+ return node; // no special handling
50
51
  }
51
52
  if (this.getParent().kind !== typescript_1.SyntaxKind.ClassDeclaration) { // Method not under a class (i.e. an anonymous object ?}
52
- return node;
53
+ return node; // no special handling
53
54
  }
54
55
  const methodName = methodDeclaration.name.escapedText;
55
56
  try {
56
57
  let remoteDecorator = this.getChilds(methodDeclaration).find(d => d.kind === typescript_1.SyntaxKind.Decorator);
57
58
  if (!remoteDecorator) { // no @remote found ?
58
- return node;
59
+ return node; // no special handling
59
60
  }
60
61
  // Diagnosis: Check for overloads:
61
62
  if ((_a = this.diagnosis_currentClass_instanceMethodsSeen) === null || _a === void 0 ? void 0 : _a.has(methodName)) { // Seen twice ?
62
- throw new Error(`@remote methods cannot have multiple/overloaded signatures: ${methodName}`); // TODO: add diagnosis
63
+ throw new Error(`@remote methods cannot have multiple/overloaded signatures: ${methodName}. Location: ${this.diag_sourceLocation(node)}`); // TODO: add diagnosis
63
64
  }
64
65
  this.currentClass_instanceMethodsMeta[methodName] = this.createMethodMetaExpression(methodDeclaration, methodName); // create the code:
65
66
  }
@@ -74,10 +75,16 @@ class AddRemoteMethodsMeta extends transformerUtil_1.FileTransformRun {
74
75
  try {
75
76
  let result = this.visitChilds(node);
76
77
  if (Object.keys(this.currentClass_instanceMethodsMeta).length > 0) { // Current class has @remote methods ?
77
- // add "static getRemoteMethodsMeta() {...}" method:
78
- // @ts-ignore yes, a bit hacky, but with factory.crateClassDeclation we might also miss some properties
79
- result.members = this.context.factory.createNodeArray([...result.members.values(), this.create_static_getRemoteMethodsMeta_expression()]);
80
- this.astWasModified = true;
78
+ if (this.result.patches.length === 0) { // First patch
79
+ this.result.patches.push({ position: 0, contentToInsert: '/* inserted by restfuncs-transformer:*/import _rf_typia from "typia";' }); // add the type import, which is needed by the following
80
+ }
81
+ // *** Create the "getRemoteMethodsMeta()" function and add a patch for the source file to the result: ***
82
+ let methodDeclarationSourceText = this.create_static_getRemoteMethodsMeta_expression();
83
+ if (AddRemoteMethodsMeta.squeezeDeclarationsIntoOneLine) {
84
+ methodDeclarationSourceText = '/* code squeezed into one line to keep line numbers intact. You can output it prettier by setting "pretty":true in the plugin configuration in tsconfig.json */' + methodDeclarationSourceText.replaceAll("\n", "");
85
+ }
86
+ methodDeclarationSourceText = ";" + methodDeclarationSourceText; // prepend with semicolon to prevent syntax error if there's stuff in the same line of the closing bracket
87
+ this.result.patches.push({ position: node.end - 1 /* insert before the closing bracket*/, contentToInsert: methodDeclarationSourceText }); // Add patch to result
81
88
  }
82
89
  return result;
83
90
  }
@@ -97,6 +104,10 @@ class AddRemoteMethodsMeta extends transformerUtil_1.FileTransformRun {
97
104
  * arguments: {
98
105
  * ...
99
106
  * }
107
+ * result: {
108
+ * ...
109
+ * }
110
+ * callbacks:[...]
100
111
  * jsDoc: {
101
112
  * ...
102
113
  * }
@@ -107,24 +118,101 @@ class AddRemoteMethodsMeta extends transformerUtil_1.FileTransformRun {
107
118
  * @private
108
119
  */
109
120
  createMethodMetaExpression(node, methodName) {
121
+ // Note: These `factory.create...` "pyramids of doom", which you see all along in this method's code, were mostly created by copying the example code from readme.md#how-it-works through the [AST viewer tool](https://ts-ast-viewer.com/)
122
+ // TODO: remove them und use plain strings
110
123
  const factory = this.context.factory;
111
124
  const arguments_typiaFuncs = {
125
+ "validateEquals": "_rf_typia.validateEquals",
126
+ "validatePrune": "_rf_typia.misc.validatePrune"
127
+ };
128
+ const result_typiaFuncs = Object.assign({}, arguments_typiaFuncs);
129
+ const old_typiaFuncs = {
112
130
  /**
113
131
  * typia.validateEquals
114
132
  */
115
- validateEquals: factory.createPropertyAccessExpression(factory.createIdentifier("typia"), factory.createIdentifier("validateEquals")),
116
- "validatePrune": factory.createPropertyAccessExpression(factory.createPropertyAccessExpression(factory.createIdentifier("typia"), factory.createIdentifier("misc")), factory.createIdentifier("validatePrune"))
133
+ validateEquals: factory.createPropertyAccessExpression(factory.createIdentifier("_rf_typia"), factory.createIdentifier("validateEquals")),
134
+ "validatePrune": factory.createPropertyAccessExpression(factory.createPropertyAccessExpression(factory.createIdentifier("_rf_typia"), factory.createIdentifier("misc")), factory.createIdentifier("validatePrune"))
117
135
  };
118
- const result_typiaFuncs = Object.assign({}, arguments_typiaFuncs);
119
- // Example from readme.md#how-it-works Copy&pasted through the [AST viewer tool](https://ts-ast-viewer.com/)
120
- // @ts-ignore
121
- return factory.createObjectLiteralExpression([
122
- // arguments: {...}
123
- factory.createPropertyAssignment(factory.createIdentifier("arguments"), factory.createObjectLiteralExpression(Object.keys(arguments_typiaFuncs).map((typiaFnName) => factory.createPropertyAssignment(factory.createIdentifier(typiaFnName), factory.createArrowFunction(undefined, undefined, [factory.createParameterDeclaration(undefined, undefined, factory.createIdentifier("args"), undefined, factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword), undefined)], undefined, factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), factory.createCallExpression(arguments_typiaFuncs[typiaFnName], [factory.createTypeReferenceNode(factory.createIdentifier("Parameters"), [factory.createIndexedAccessTypeNode(factory.createTypeQueryNode(factory.createQualifiedName(factory.createIdentifier("this"), factory.createIdentifier("prototype")), undefined), factory.createLiteralTypeNode(factory.createStringLiteral(methodName)))])], [factory.createIdentifier("args")])))), true)),
124
- // result: {...}
125
- factory.createPropertyAssignment(factory.createIdentifier("result"), factory.createObjectLiteralExpression(Object.keys(result_typiaFuncs).map((typiaFnName) => factory.createPropertyAssignment(factory.createIdentifier(typiaFnName), factory.createArrowFunction(undefined, undefined, [factory.createParameterDeclaration(undefined, undefined, factory.createIdentifier("value"), undefined, factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword), undefined)], undefined, factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), factory.createCallExpression(arguments_typiaFuncs[typiaFnName], [factory.createTypeReferenceNode(factory.createIdentifier("Awaited"), [factory.createTypeReferenceNode(factory.createIdentifier("ReturnType"), [factory.createIndexedAccessTypeNode(factory.createTypeQueryNode(factory.createQualifiedName(factory.createIdentifier("this"), factory.createIdentifier("prototype")), undefined), factory.createLiteralTypeNode(factory.createStringLiteral(methodName)))])])], [factory.createIdentifier("value")])))), true)),
126
- factory.createPropertyAssignment(factory.createIdentifier("jsDoc"), this.createJsDocExpression(node, methodName))
127
- ], true);
136
+ // Clone parameters and convert all ParameterDeclarations to NamedTupleMembers (They look the same in the .ts code but are of a different SyntaxKind).
137
+ const methodParametersWithPlaceholders = structuredClone(node.parameters).map(paramDecl => {
138
+ return factory.createNamedTupleMember(paramDecl.dotDotDotToken, paramDecl.name, paramDecl.questionToken, paramDecl.type || factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword));
139
+ });
140
+ // ** Callbacks: **
141
+ // Replace the (arrow-) function declarations inside methodParametersWithPlaceholders with "_callback" placeholders and create the callbackDeclarations array which contains the
142
+ // declarations like in readme.md saying "[{ // here for the `someCallbackFn: (p:number) => Promise<string>` declaration ...}]"
143
+ let callbackDeclarations = [];
144
+ (0, restfuncs_common_1.visitReplace)(methodParametersWithPlaceholders, (value, visitChilds, context) => {
145
+ if (value && value.kind === typescript_1.SyntaxKind.FunctionType) { // found an arrow-style function type declaration ?
146
+ const functionTypeNode = value;
147
+ // **** Create the callbackDeclaration like `{ // here for the `someCallbackFn: (p:number) => Promise<string>` declaration...}` in readme.md ****
148
+ // Create argumentsDeclaration. `{ validateEquals: ..., validatePrune: ...}` like in readme.md
149
+ const argumentsDeclaration = factory.createObjectLiteralExpression(Object.keys(arguments_typiaFuncs).map((typiaFnName) => // for validateEquals + validatePrune
150
+ factory.createPropertyAssignment(factory.createIdentifier(typiaFnName), factory.createArrowFunction(undefined, undefined, [factory.createParameterDeclaration(undefined, undefined, factory.createIdentifier("args"), undefined, factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword), undefined)], undefined, factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), factory.createCallExpression(old_typiaFuncs[typiaFnName], [factory.createTupleTypeNode(structuredClone(functionTypeNode.parameters).map(paramDecl => {
151
+ return factory.createNamedTupleMember(paramDecl.dotDotDotToken, paramDecl.name, paramDecl.questionToken, paramDecl.type || factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword));
152
+ }))], [factory.createIdentifier("args")])))), true);
153
+ // Create awaitedResultDeclaration. `awaitedResult = ...` like in readme.md:
154
+ let awaitedResultDeclaration;
155
+ if (functionTypeNode.type.kind == typescript_1.SyntaxKind.VoidKeyword) { // Return type is (sync) void ?
156
+ awaitedResultDeclaration = factory.createIdentifier("undefined");
157
+ }
158
+ else {
159
+ if (functionTypeNode.type.kind == typescript_1.SyntaxKind.TypeReference && functionTypeNode.type.typeName.escapedText == "Promise") { // Returns via Promise
160
+ // Validity check:
161
+ if (!functionTypeNode.type.typeArguments || functionTypeNode.type.typeArguments.length != 1) {
162
+ throw new Error(`A callback function, declared in ${methodName}'s parameters, returns a Promise with an invalid number of type arguments. Location: ${this.diag_sourceLocation(node)}`);
163
+ }
164
+ const awaitedType = functionTypeNode.type.typeArguments[0];
165
+ awaitedResultDeclaration = factory.createObjectLiteralExpression(Object.keys(result_typiaFuncs).map((typiaFnName) => // for validateEquals + validatePrune
166
+ factory.createPropertyAssignment(factory.createIdentifier(typiaFnName), factory.createArrowFunction(undefined, undefined, [factory.createParameterDeclaration(undefined, undefined, factory.createIdentifier("value"), undefined, factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword), undefined)], undefined, factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), factory.createCallExpression(old_typiaFuncs[typiaFnName], [awaitedType], [factory.createIdentifier("value")])))), true);
167
+ }
168
+ else {
169
+ throw new Error(`A callback function, declared in ${methodName}'s parameters, declares that it returns a value directly (sync) and not via Promise (this is not possible over the wire). Please use Promise<${this.nodeToString(functionTypeNode.type, true, true)}> instead. Location: ${this.diag_sourceLocation(functionTypeNode.type)}`);
170
+ }
171
+ }
172
+ // Compose result:
173
+ const callbackDeclaration = factory.createObjectLiteralExpression([
174
+ // arguments: {...}
175
+ factory.createPropertyAssignment(factory.createIdentifier("arguments"), argumentsDeclaration),
176
+ // awaitedResult: {...}
177
+ factory.createPropertyAssignment(factory.createIdentifier("awaitedResult"), awaitedResultDeclaration),
178
+ // source:
179
+ factory.createPropertyAssignment(factory.createIdentifier("diagnosis_source"), this.createSourceNodeDiagnosisExpression(functionTypeNode))
180
+ ], true);
181
+ callbackDeclarations.push(callbackDeclaration);
182
+ const declarationIndex = callbackDeclarations.length - 1;
183
+ return factory.createExpressionWithTypeArguments(factory.createIdentifier("CallbackPlaceholder"), [factory.createLiteralTypeNode(factory.createNumericLiteral(declarationIndex))]); // replace with CallbackPlaceholder<n>
184
+ }
185
+ return visitChilds(value, context);
186
+ });
187
+ // ** Obtain, what goes into typia.validate...<...> ***
188
+ const hasPlaceholders = callbackDeclarations.length > 0;
189
+ let typeParamForTypiaValidate = `[${node.parameters.map(param => this.nodeToString(param, true, true)).join(", ")}]`; // [param1: type1, param2: type2, ...]
190
+ let typeParamForTypiaValidateWithPlaceholders = this.nodeToString(factory.createTupleTypeNode(methodParametersWithPlaceholders), true, true);
191
+ if (node.parameters.some(p => p.type === undefined)) { // Some parameters don't have an explicit type ? (i.e. the type is inherited from the base class)
192
+ if (hasPlaceholders) {
193
+ throw new Error(`Parameter '${node.parameters.find(p => p.type === undefined).name.escapedText}' does not have a (/ an explicit) type in remote method ${methodName}. In combination with declared callback functions, all parameters must have explicit types. Location: ${this.diag_sourceLocation(node)}`); // TODO: add diagnosis
194
+ }
195
+ // Use the old style: Parameters<typeof this.prototype["method name"]>. This worked very fine in old versions but we now want to battle-test the other style
196
+ typeParamForTypiaValidate = typeParamForTypiaValidateWithPlaceholders = `Parameters<typeof this.prototype["${methodName}"]>`;
197
+ }
198
+ // ** compose result **
199
+ return `{
200
+ arguments: {${ /* for validateEquals + validatePrune */Object.keys(arguments_typiaFuncs).map((typiaFnName) => `
201
+ ${typiaFnName}: (args: unknown) => ${arguments_typiaFuncs[typiaFnName]}<${typeParamForTypiaValidate}>(args)`).join(",")}
202
+ ,
203
+ withPlaceholders: ${hasPlaceholders ? `{${ /* for validateEquals + validatePrune */Object.keys(arguments_typiaFuncs).map((typiaFnName) => `
204
+ ${typiaFnName}: (args: unknown, onValidateCallbackArg: (placeholderId: string, declarationIndex: number) => boolean) => ${arguments_typiaFuncs[typiaFnName]}<${typeParamForTypiaValidateWithPlaceholders}>(args)`).join(",")}
205
+ }` : "undefined"}
206
+ },
207
+ result: {${ /* for validateEquals + validatePrune */Object.keys(result_typiaFuncs).map((typiaFnName) => `
208
+ ${typiaFnName}: (value: unknown) => ${result_typiaFuncs[typiaFnName]}<Awaited<ReturnType<typeof this.prototype["${methodName}"]>>>(value)`).join(",")}
209
+ },
210
+ callbacks: [${callbackDeclarations.map(cbd => `
211
+ ${this.nodeToString(cbd, true)}`).join(",")}
212
+ ],
213
+ jsDoc: ${this.nodeToString(this.createJsDocExpression(node, methodName), true)},
214
+ diagnosis_source: ${this.nodeToString(this.createSourceNodeDiagnosisExpression(node), true)},
215
+ }`;
128
216
  }
129
217
  /**
130
218
  * Crates the following expression like in readme.md#how-it-works
@@ -155,7 +243,7 @@ class AddRemoteMethodsMeta extends transformerUtil_1.FileTransformRun {
155
243
  const jsdoc = node.jsDoc[node.jsDoc.length - 1]; // use last jsDoc
156
244
  const comment = jsdoc.comment || "";
157
245
  if (typeof comment !== "string") {
158
- throw new Error(`Expected comment to be a string. Got: ${comment}`); // TODO add to diagnostics instead
246
+ throw new Error(`Expected comment to be a string. Got: ${comment}. Location: ${this.diag_sourceLocation(node)}`); // TODO add to diagnostics instead
159
247
  }
160
248
  // Collect params and tags
161
249
  const params = {};
@@ -165,7 +253,7 @@ class AddRemoteMethodsMeta extends transformerUtil_1.FileTransformRun {
165
253
  const name = tag.tagName.escapedText.toLowerCase();
166
254
  const comment = tag.comment;
167
255
  if (comment && typeof comment !== "string") {
168
- throw new Error(`Expected comment to be a string. Got: ${comment}`); // TODO add to diagnostics instead
256
+ throw new Error(`Expected comment to be a string. Got: ${comment}. Location: ${this.diag_sourceLocation(node)}`); // TODO add to diagnostics instead
169
257
  }
170
258
  if (name === "param") {
171
259
  const paramname = (_a = tag.name) === null || _a === void 0 ? void 0 : _a.escapedText;
@@ -192,7 +280,7 @@ class AddRemoteMethodsMeta extends transformerUtil_1.FileTransformRun {
192
280
  /**
193
281
  * Crates the following expression like in readme.md#how-it-works
194
282
  * <code><pre>
195
- * static getRemoteMethodsMeta() {
283
+ * static getRemoteMethodsMeta(...) :... {
196
284
  * ....
197
285
  * }
198
286
  * </pre></code>
@@ -201,21 +289,60 @@ class AddRemoteMethodsMeta extends transformerUtil_1.FileTransformRun {
201
289
  * @private
202
290
  */
203
291
  create_static_getRemoteMethodsMeta_expression() {
292
+ return `` +
293
+ `static getRemoteMethodsMeta(): (typeof this.type_remoteMethodsMeta) {
294
+ this.__hello_developer__make_sure_your_class_is_a_subclass_of_ServerSession;` /* Attempt to give a friendly error message when this is not the case. Otherwise the previous line would fail and leaves the user wondering. */ + `
295
+ type CallbackPlaceholder<DECL_INDEX extends number> = string & _rf_typia.tags.TagBase<{kind: "callbackFn", target: "string", value: undefined, validate: \`onValidateCallbackArg($input, \${DECL_INDEX})\`}>;
296
+ const result= {
297
+ transformerVersion: {major: ${index_1.transformerVersion.major}, feature: ${index_1.transformerVersion.feature} },
298
+ instanceMethods: {${Object.keys(this.currentClass_instanceMethodsMeta).map(methodName => `
299
+ ${methodName}: ${this.currentClass_instanceMethodsMeta[methodName]}`).join(",")}
300
+ }
301
+ };
302
+
303
+ return result; /* Code style note for this line: Why not do \`return {...}\` directly ? This tiny difference allows for extra properties which ensure backward compatibility with older "restfuncs-server" packages. */
304
+ }`;
305
+ }
306
+ nodeToString(node, removeComments = false, removeLineBreaks = false) {
307
+ const printer = typescript_1.default.createPrinter({ newLine: typescript_1.default.NewLineKind.LineFeed, removeComments });
308
+ let result = printer.printNode(typescript_1.default.EmitHint.Unspecified, node, this.sourceFile);
309
+ if (removeLineBreaks) {
310
+ result = result.replaceAll(/\n\s*/g, " ");
311
+ }
312
+ return result;
313
+ }
314
+ /**
315
+ * Creates a node, that declares a SourceNodeDiagnosis (defined in ServerSession.ts) object.
316
+ *
317
+ * To output the info at runtime: i.e. "MyServerSessionClass.ts:23:30, reading: async myRemoteMethod(param1:...): Promise<void> {}
318
+ * @param node
319
+ */
320
+ createSourceNodeDiagnosisExpression(node) {
321
+ var _a;
204
322
  const factory = this.context.factory;
205
- let instanceMethods = factory.createObjectLiteralExpression(Object.keys(this.currentClass_instanceMethodsMeta).map(methodName => factory.createPropertyAssignment(factory.createStringLiteral(methodName), this.currentClass_instanceMethodsMeta[methodName])), true);
206
- // Example from readme.md#how-it-works Copy&pasted through the [AST viewer tool](https://ts-ast-viewer.com/)
207
- return factory.createMethodDeclaration([factory.createToken(typescript_1.default.SyntaxKind.StaticKeyword)], undefined, factory.createIdentifier("getRemoteMethodsMeta"), undefined, undefined, [], factory.createParenthesizedType(factory.createTypeQueryNode(factory.createQualifiedName(factory.createIdentifier("this"), factory.createIdentifier("type_remoteMethodsMeta")), undefined)), factory.createBlock([
208
- factory.createExpressionStatement(factory.createPropertyAccessExpression(factory.createThis(), factory.createIdentifier("__hello_developer__make_sure_your_class_is_a_subclass_of_ServerSession"))),
209
- factory.createVariableStatement(undefined, factory.createVariableDeclarationList([factory.createVariableDeclaration(factory.createIdentifier("typia"), undefined, undefined, factory.createPropertyAccessExpression(factory.createThis(), factory.createIdentifier("typiaRuntime")))], typescript_1.default.NodeFlags.Let)),
210
- factory.createReturnStatement(factory.createObjectLiteralExpression([
211
- factory.createPropertyAssignment(factory.createIdentifier("transformerVersion"), factory.createObjectLiteralExpression([
212
- factory.createPropertyAssignment(factory.createIdentifier("major"), factory.createIdentifier(`${index_1.transformerVersion.major}`)),
213
- factory.createPropertyAssignment(factory.createIdentifier("feature"), factory.createIdentifier(`${index_1.transformerVersion.feature}`))
214
- ], false)),
215
- factory.createPropertyAssignment(factory.createIdentifier("instanceMethods"), instanceMethods)
216
- ], true))
217
- ], true));
323
+ if (node.body !== undefined) {
324
+ // Empty the body
325
+ node = structuredClone(node);
326
+ node.body = factory.createBlock([], false);
327
+ }
328
+ const lineAndChar = this.sourceFile.getLineAndCharacterOfPosition((((_a = node.getStart) === null || _a === void 0 ? void 0 : _a.call(node, this.sourceFile, false)) || node.pos));
329
+ return factory.createObjectLiteralExpression([
330
+ factory.createPropertyAssignment(factory.createIdentifier("file"), factory.createStringLiteral(this.sourceFile.fileName)),
331
+ factory.createPropertyAssignment(factory.createIdentifier("line"), factory.createNumericLiteral(lineAndChar.line + 1)),
332
+ factory.createPropertyAssignment(factory.createIdentifier("character"), factory.createNumericLiteral(lineAndChar.character + 1)),
333
+ factory.createPropertyAssignment(factory.createIdentifier("signatureText"), factory.createStringLiteral(this.nodeToString(node, false)))
334
+ ], false);
335
+ }
336
+ diag_sourceLocation(node) {
337
+ var _a;
338
+ const lineAndChar = this.sourceFile.getLineAndCharacterOfPosition((((_a = node.getStart) === null || _a === void 0 ? void 0 : _a.call(node, this.sourceFile, false)) || node.pos));
339
+ return `${this.sourceFile.fileName}:${lineAndChar.line + 1}:${lineAndChar.character + 1}`;
218
340
  }
219
341
  }
220
342
  exports.AddRemoteMethodsMeta = AddRemoteMethodsMeta;
343
+ /**
344
+ * Should this transformer squeeze the added declarations (result) into one line to keep the line numbers in the source text intact ?
345
+ * Prevents the [broken source maps bug](https://github.com/bogeeee/restfuncs/issues/2)
346
+ */
347
+ AddRemoteMethodsMeta.squeezeDeclarationsIntoOneLine = true;
221
348
  //# sourceMappingURL=AddRemoteMethodsMeta.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AddRemoteMethodsMeta.js","sourceRoot":"","sources":["AddRemoteMethodsMeta.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AddRemoteMethodsMeta.js","sourceRoot":"","sources":["AddRemoteMethodsMeta.ts"],"names":[],"mappings":"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"}