@vaadin/hilla-generator-plugin-signals 24.5.0-alpha9 → 24.5.0-beta1

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 +1 @@
1
- {"version":3,"file":"SignalProcessor.d.ts","sourceRoot":"","sources":["src/SignalProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,wCAAwC,CAAC;AAKjE,OAAW,EAA4B,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAS3E,MAAM,CAAC,OAAO,OAAO,eAAe;;gBAOtB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM;IAShG,OAAO,IAAI,UAAU;CA6FtB"}
1
+ {"version":3,"file":"SignalProcessor.d.ts","sourceRoot":"","sources":["src/SignalProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,wCAAwC,CAAC;AAKjE,OAAW,EAA6C,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAY5F,MAAM,CAAC,OAAO,OAAO,eAAe;;gBAOtB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM;IAShG,OAAO,IAAI,UAAU;CAmHtB"}
@@ -1,12 +1,15 @@
1
- import { template, transform } from "@vaadin/hilla-generator-utils/ast.js";
1
+ import { template, transform, traverse } from "@vaadin/hilla-generator-utils/ast.js";
2
2
  import createSourceFile from "@vaadin/hilla-generator-utils/createSourceFile.js";
3
3
  import DependencyManager from "@vaadin/hilla-generator-utils/dependencies/DependencyManager.js";
4
4
  import PathManager from "@vaadin/hilla-generator-utils/dependencies/PathManager.js";
5
5
  import ts, {} from "typescript";
6
6
  const HILLA_REACT_SIGNALS = "@vaadin/hilla-react-signals";
7
- const NUMBER_SIGNAL_CHANNEL = "$NUMBER_SIGNAL_CHANNEL$";
8
7
  const CONNECT_CLIENT = "$CONNECT_CLIENT$";
9
- const signalImportPaths = ["com/vaadin/hilla/signals/NumberSignal"];
8
+ const METHOD_NAME = "$METHOD_NAME$";
9
+ const SIGNAL = "$SIGNAL$";
10
+ const RETURN_TYPE = "$RETURN_TYPE$";
11
+ const signals = ["NumberSignal", "ValueSignal"];
12
+ const genericSignals = ["ValueSignal"];
10
13
  class SignalProcessor {
11
14
  #dependencyManager;
12
15
  #owner;
@@ -24,42 +27,53 @@ class SignalProcessor {
24
27
  process() {
25
28
  this.#owner.logger.debug(`Processing signals: ${this.#service}`);
26
29
  const { imports } = this.#dependencyManager;
27
- const numberSignalChannelId = imports.named.add(HILLA_REACT_SIGNALS, "NumberSignalChannel");
28
30
  const [, connectClientId] = imports.default.iter().find(([path]) => path.includes("connect-client"));
29
- this.#processSignalImports(signalImportPaths);
30
31
  const initTypeId = imports.named.getIdentifier("@vaadin/hilla-frontend", "EndpointRequestInit");
31
32
  let initTypeUsageCount = 0;
33
+ const functionParams = /* @__PURE__ */ new Map();
32
34
  const [file] = ts.transform(this.#sourceFile, [
33
35
  transform((tsNode) => {
34
36
  if (ts.isFunctionDeclaration(tsNode) && tsNode.name && this.#methods.has(tsNode.name.text)) {
35
- const methodName = tsNode.name.text;
36
- const body = template(
37
- `
38
- function dummy() {
39
- return new ${NUMBER_SIGNAL_CHANNEL}('${this.#service}.${methodName}', ${CONNECT_CLIENT}).signal;
37
+ const filteredParams = tsNode.parameters.filter(
38
+ (p) => !p.type || !ts.isTypeReferenceNode(p.type) || p.type.typeName !== initTypeId
39
+ );
40
+ if (filteredParams.length > 0) {
41
+ functionParams.set(tsNode.name.text, filteredParams);
42
+ }
43
+ const paramNames = filteredParams.map((p) => p.name.text).join(", ");
44
+ const signalId = this.#replaceSignalImport(tsNode);
45
+ let genericReturnType;
46
+ if (genericSignals.includes(signalId.text)) {
47
+ genericReturnType = tsNode.type.typeArguments[0];
48
+ }
49
+ const returnType = genericReturnType ?? signalId;
50
+ const INITIAL_VALUE = signalId.text.startsWith("NumberSignal") ? "0" : "undefined";
51
+ return template(
52
+ `function ${METHOD_NAME}(): ${RETURN_TYPE} {
53
+ return new ${SIGNAL}(${INITIAL_VALUE}, { client: ${CONNECT_CLIENT}, endpoint: '${this.#service}', method: '${tsNode.name.text}'${filteredParams.length > 0 ? `, params: { ${paramNames} }` : ""} });
40
54
  }`,
41
- (statements) => statements[0].body?.statements,
55
+ (statements) => statements,
42
56
  [
43
- transform(
44
- (node) => ts.isIdentifier(node) && node.text === NUMBER_SIGNAL_CHANNEL ? numberSignalChannelId : node
45
- ),
57
+ transform((node) => ts.isIdentifier(node) && node.text === METHOD_NAME ? tsNode.name : node),
58
+ transform((node) => ts.isIdentifier(node) && node.text === SIGNAL ? signalId : node),
59
+ transform((node) => ts.isIdentifier(node) && node.text === RETURN_TYPE ? returnType : node),
46
60
  transform((node) => ts.isIdentifier(node) && node.text === CONNECT_CLIENT ? connectClientId : node)
47
61
  ]
48
62
  );
49
- let returnType = tsNode.type;
50
- if (returnType && ts.isTypeReferenceNode(returnType) && "text" in returnType.typeName && returnType.typeName.text === "Promise") {
51
- if (returnType.typeArguments && returnType.typeArguments.length > 0) {
52
- returnType = returnType.typeArguments[0];
53
- }
54
- }
55
- return ts.factory.createFunctionDeclaration(
56
- tsNode.modifiers?.filter((modifier) => modifier.kind !== ts.SyntaxKind.AsyncKeyword),
63
+ }
64
+ return tsNode;
65
+ }),
66
+ transform((tsNode) => {
67
+ if (ts.isFunctionDeclaration(tsNode) && tsNode.name && this.#methods.has(tsNode.name.text) && functionParams.has(tsNode.name.text)) {
68
+ return ts.factory.updateFunctionDeclaration(
69
+ tsNode,
70
+ tsNode.modifiers,
57
71
  tsNode.asteriskToken,
58
72
  tsNode.name,
59
73
  tsNode.typeParameters,
60
- tsNode.parameters.filter(({ name }) => !(ts.isIdentifier(name) && name.text === "init")),
61
- returnType,
62
- ts.factory.createBlock(body ?? [], false)
74
+ functionParams.get(tsNode.name.text),
75
+ tsNode.type,
76
+ tsNode.body
63
77
  );
64
78
  }
65
79
  return tsNode;
@@ -84,16 +98,27 @@ function dummy() {
84
98
  file.fileName
85
99
  );
86
100
  }
87
- #processSignalImports(signalImports) {
101
+ #replaceSignalImport(method) {
88
102
  const { imports } = this.#dependencyManager;
89
- signalImports.forEach((signalImport) => {
90
- const result = imports.default.iter().find(([path]) => path.includes(signalImport));
91
- if (result) {
92
- const [path, id] = result;
93
- imports.default.remove(path);
94
- imports.named.add(HILLA_REACT_SIGNALS, id.text, true, id);
103
+ if (method.type) {
104
+ const type = traverse(
105
+ method.type,
106
+ (node) => ts.isIdentifier(node) && signals.includes(node.text) ? node : void 0
107
+ );
108
+ if (type) {
109
+ const signalId = imports.named.getIdentifier(HILLA_REACT_SIGNALS, type.text);
110
+ if (signalId) {
111
+ return signalId;
112
+ }
113
+ const result = imports.default.iter().find(([_p, id]) => id.text === type.text);
114
+ if (result) {
115
+ const [path] = result;
116
+ imports.default.remove(path);
117
+ return imports.named.add(HILLA_REACT_SIGNALS, type.text, false, type);
118
+ }
95
119
  }
96
- });
120
+ }
121
+ throw new Error("Signal type not found");
97
122
  }
98
123
  }
99
124
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["src/SignalProcessor.ts"],
4
- "sourcesContent": ["import type Plugin from '@vaadin/hilla-generator-core/Plugin.js';\nimport { template, transform } from '@vaadin/hilla-generator-utils/ast.js';\nimport createSourceFile from '@vaadin/hilla-generator-utils/createSourceFile.js';\nimport DependencyManager from '@vaadin/hilla-generator-utils/dependencies/DependencyManager.js';\nimport PathManager from '@vaadin/hilla-generator-utils/dependencies/PathManager.js';\nimport ts, { type FunctionDeclaration, type SourceFile } from 'typescript';\n\nconst HILLA_REACT_SIGNALS = '@vaadin/hilla-react-signals';\n\nconst NUMBER_SIGNAL_CHANNEL = '$NUMBER_SIGNAL_CHANNEL$';\nconst CONNECT_CLIENT = '$CONNECT_CLIENT$';\n\nconst signalImportPaths = ['com/vaadin/hilla/signals/NumberSignal'];\n\nexport default class SignalProcessor {\n readonly #dependencyManager: DependencyManager;\n readonly #owner: Plugin;\n readonly #service: string;\n readonly #methods: Map<string, string>;\n readonly #sourceFile: SourceFile;\n\n constructor(service: string, methods: Map<string, string>, sourceFile: SourceFile, owner: Plugin) {\n this.#service = service;\n this.#methods = methods;\n this.#sourceFile = sourceFile;\n this.#owner = owner;\n this.#dependencyManager = new DependencyManager(new PathManager({ extension: '.js' }));\n this.#dependencyManager.imports.fromCode(this.#sourceFile);\n }\n\n process(): SourceFile {\n this.#owner.logger.debug(`Processing signals: ${this.#service}`);\n const { imports } = this.#dependencyManager;\n const numberSignalChannelId = imports.named.add(HILLA_REACT_SIGNALS, 'NumberSignalChannel');\n\n const [, connectClientId] = imports.default.iter().find(([path]) => path.includes('connect-client'))!;\n\n this.#processSignalImports(signalImportPaths);\n const initTypeId = imports.named.getIdentifier('@vaadin/hilla-frontend', 'EndpointRequestInit');\n let initTypeUsageCount = 0;\n\n const [file] = ts.transform<SourceFile>(this.#sourceFile, [\n transform((tsNode) => {\n if (ts.isFunctionDeclaration(tsNode) && tsNode.name && this.#methods.has(tsNode.name.text)) {\n const methodName = tsNode.name.text;\n\n const body = template(\n `\nfunction dummy() {\n return new ${NUMBER_SIGNAL_CHANNEL}('${this.#service}.${methodName}', ${CONNECT_CLIENT}).signal;\n}`,\n (statements) => (statements[0] as FunctionDeclaration).body?.statements,\n [\n transform((node) =>\n ts.isIdentifier(node) && node.text === NUMBER_SIGNAL_CHANNEL ? numberSignalChannelId : node,\n ),\n transform((node) => (ts.isIdentifier(node) && node.text === CONNECT_CLIENT ? connectClientId : node)),\n ],\n );\n\n let returnType = tsNode.type;\n if (\n returnType &&\n ts.isTypeReferenceNode(returnType) &&\n 'text' in returnType.typeName &&\n returnType.typeName.text === 'Promise'\n ) {\n if (returnType.typeArguments && returnType.typeArguments.length > 0) {\n returnType = returnType.typeArguments[0];\n }\n }\n\n return ts.factory.createFunctionDeclaration(\n tsNode.modifiers?.filter((modifier) => modifier.kind !== ts.SyntaxKind.AsyncKeyword),\n tsNode.asteriskToken,\n tsNode.name,\n tsNode.typeParameters,\n tsNode.parameters.filter(({ name }) => !(ts.isIdentifier(name) && name.text === 'init')),\n returnType,\n ts.factory.createBlock(body ?? [], false),\n );\n }\n return tsNode;\n }),\n transform((tsNode) => {\n if (ts.isFunctionDeclaration(tsNode)) {\n if (\n !(tsNode.name && this.#methods.has(tsNode.name.text)) &&\n tsNode.parameters.some((p) => p.type && ts.isTypeReferenceNode(p.type) && p.type.typeName === initTypeId)\n ) {\n initTypeUsageCount += 1;\n }\n }\n return tsNode;\n }),\n ]).transformed;\n\n if (initTypeUsageCount === 0) {\n imports.named.remove('@vaadin/hilla-frontend', 'EndpointRequestInit');\n }\n\n return createSourceFile(\n [\n ...this.#dependencyManager.imports.toCode(),\n ...file.statements.filter((statement) => !ts.isImportDeclaration(statement)),\n ],\n file.fileName,\n );\n }\n\n #processSignalImports(signalImports: readonly string[]) {\n const { imports } = this.#dependencyManager;\n\n signalImports.forEach((signalImport) => {\n const result = imports.default.iter().find(([path]) => path.includes(signalImport));\n\n if (result) {\n const [path, id] = result;\n imports.default.remove(path);\n imports.named.add(HILLA_REACT_SIGNALS, id.text, true, id);\n }\n });\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type Plugin from '@vaadin/hilla-generator-core/Plugin.js';\nimport { template, transform, traverse } from '@vaadin/hilla-generator-utils/ast.js';\nimport createSourceFile from '@vaadin/hilla-generator-utils/createSourceFile.js';\nimport DependencyManager from '@vaadin/hilla-generator-utils/dependencies/DependencyManager.js';\nimport PathManager from '@vaadin/hilla-generator-utils/dependencies/PathManager.js';\nimport ts, { type FunctionDeclaration, type Identifier, type SourceFile } from 'typescript';\n\nconst HILLA_REACT_SIGNALS = '@vaadin/hilla-react-signals';\n\nconst CONNECT_CLIENT = '$CONNECT_CLIENT$';\nconst METHOD_NAME = '$METHOD_NAME$';\nconst SIGNAL = '$SIGNAL$';\nconst RETURN_TYPE = '$RETURN_TYPE$';\n\nconst signals = ['NumberSignal', 'ValueSignal'];\nconst genericSignals = ['ValueSignal'];\n\nexport default class SignalProcessor {\n readonly #dependencyManager: DependencyManager;\n readonly #owner: Plugin;\n readonly #service: string;\n readonly #methods: Map<string, string>;\n readonly #sourceFile: SourceFile;\n\n constructor(service: string, methods: Map<string, string>, sourceFile: SourceFile, owner: Plugin) {\n this.#service = service;\n this.#methods = methods;\n this.#sourceFile = sourceFile;\n this.#owner = owner;\n this.#dependencyManager = new DependencyManager(new PathManager({ extension: '.js' }));\n this.#dependencyManager.imports.fromCode(this.#sourceFile);\n }\n\n process(): SourceFile {\n this.#owner.logger.debug(`Processing signals: ${this.#service}`);\n const { imports } = this.#dependencyManager;\n\n const [, connectClientId] = imports.default.iter().find(([path]) => path.includes('connect-client'))!;\n\n const initTypeId = imports.named.getIdentifier('@vaadin/hilla-frontend', 'EndpointRequestInit');\n let initTypeUsageCount = 0;\n const functionParams: Map<string, ts.ParameterDeclaration[]> = new Map<string, ts.ParameterDeclaration[]>();\n\n const [file] = ts.transform<SourceFile>(this.#sourceFile, [\n transform((tsNode) => {\n if (ts.isFunctionDeclaration(tsNode) && tsNode.name && this.#methods.has(tsNode.name.text)) {\n const filteredParams = tsNode.parameters.filter(\n (p) => !p.type || !ts.isTypeReferenceNode(p.type) || p.type.typeName !== initTypeId,\n );\n if (filteredParams.length > 0) {\n functionParams.set(tsNode.name.text, filteredParams);\n }\n const paramNames = filteredParams.map((p) => (p.name as ts.Identifier).text).join(', ');\n const signalId = this.#replaceSignalImport(tsNode);\n let genericReturnType;\n if (genericSignals.includes(signalId.text)) {\n genericReturnType = (tsNode.type as ts.TypeReferenceNode).typeArguments![0];\n }\n const returnType = genericReturnType ?? signalId;\n const INITIAL_VALUE = signalId.text.startsWith('NumberSignal') ? '0' : 'undefined';\n return template(\n `function ${METHOD_NAME}(): ${RETURN_TYPE} {\n return new ${SIGNAL}(${INITIAL_VALUE}, { client: ${CONNECT_CLIENT}, endpoint: '${this.#service}', method: '${tsNode.name.text}'${filteredParams.length > 0 ? `, params: { ${paramNames} }` : ''} });\n}`,\n (statements) => statements,\n [\n transform((node) => (ts.isIdentifier(node) && node.text === METHOD_NAME ? tsNode.name : node)),\n transform((node) => (ts.isIdentifier(node) && node.text === SIGNAL ? signalId : node)),\n transform((node) => (ts.isIdentifier(node) && node.text === RETURN_TYPE ? returnType : node)),\n transform((node) => (ts.isIdentifier(node) && node.text === CONNECT_CLIENT ? connectClientId : node)),\n ],\n );\n }\n return tsNode;\n }),\n transform((tsNode) => {\n if (\n ts.isFunctionDeclaration(tsNode) &&\n tsNode.name &&\n this.#methods.has(tsNode.name.text) &&\n functionParams.has(tsNode.name.text)\n ) {\n return ts.factory.updateFunctionDeclaration(\n tsNode,\n tsNode.modifiers,\n tsNode.asteriskToken,\n tsNode.name,\n tsNode.typeParameters,\n functionParams.get(tsNode.name.text)!,\n tsNode.type,\n tsNode.body,\n );\n }\n return tsNode;\n }),\n transform((tsNode) => {\n if (ts.isFunctionDeclaration(tsNode)) {\n if (\n !(tsNode.name && this.#methods.has(tsNode.name.text)) &&\n tsNode.parameters.some((p) => p.type && ts.isTypeReferenceNode(p.type) && p.type.typeName === initTypeId)\n ) {\n initTypeUsageCount += 1;\n }\n }\n return tsNode;\n }),\n ]).transformed;\n\n if (initTypeUsageCount === 0) {\n imports.named.remove('@vaadin/hilla-frontend', 'EndpointRequestInit');\n }\n\n return createSourceFile(\n [\n ...this.#dependencyManager.imports.toCode(),\n ...file.statements.filter((statement) => !ts.isImportDeclaration(statement)),\n ],\n file.fileName,\n );\n }\n\n #replaceSignalImport(method: FunctionDeclaration): Identifier {\n const { imports } = this.#dependencyManager;\n\n if (method.type) {\n const type = traverse(method.type, (node) =>\n ts.isIdentifier(node) && signals.includes(node.text) ? node : undefined,\n );\n\n if (type) {\n const signalId = imports.named.getIdentifier(HILLA_REACT_SIGNALS, type.text);\n\n if (signalId) {\n return signalId;\n }\n\n const result = imports.default.iter().find(([_p, id]) => id.text === type.text);\n\n if (result) {\n const [path] = result;\n imports.default.remove(path);\n return imports.named.add(HILLA_REACT_SIGNALS, type.text, false, type);\n }\n }\n }\n\n throw new Error('Signal type not found');\n }\n}\n"],
5
+ "mappings": "AACA,SAAS,UAAU,WAAW,gBAAgB;AAC9C,OAAO,sBAAsB;AAC7B,OAAO,uBAAuB;AAC9B,OAAO,iBAAiB;AACxB,OAAO,YAAwE;AAE/E,MAAM,sBAAsB;AAE5B,MAAM,iBAAiB;AACvB,MAAM,cAAc;AACpB,MAAM,SAAS;AACf,MAAM,cAAc;AAEpB,MAAM,UAAU,CAAC,gBAAgB,aAAa;AAC9C,MAAM,iBAAiB,CAAC,aAAa;AAErC,MAAO,gBAA8B;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,SAAiB,SAA8B,YAAwB,OAAe;AAChG,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,cAAc;AACnB,SAAK,SAAS;AACd,SAAK,qBAAqB,IAAI,kBAAkB,IAAI,YAAY,EAAE,WAAW,MAAM,CAAC,CAAC;AACrF,SAAK,mBAAmB,QAAQ,SAAS,KAAK,WAAW;AAAA,EAC3D;AAAA,EAEA,UAAsB;AACpB,SAAK,OAAO,OAAO,MAAM,uBAAuB,KAAK,QAAQ,EAAE;AAC/D,UAAM,EAAE,QAAQ,IAAI,KAAK;AAEzB,UAAM,CAAC,EAAE,eAAe,IAAI,QAAQ,QAAQ,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,KAAK,SAAS,gBAAgB,CAAC;AAEnG,UAAM,aAAa,QAAQ,MAAM,cAAc,0BAA0B,qBAAqB;AAC9F,QAAI,qBAAqB;AACzB,UAAM,iBAAyD,oBAAI,IAAuC;AAE1G,UAAM,CAAC,IAAI,IAAI,GAAG,UAAsB,KAAK,aAAa;AAAA,MACxD,UAAU,CAAC,WAAW;AACpB,YAAI,GAAG,sBAAsB,MAAM,KAAK,OAAO,QAAQ,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,GAAG;AAC1F,gBAAM,iBAAiB,OAAO,WAAW;AAAA,YACvC,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,oBAAoB,EAAE,IAAI,KAAK,EAAE,KAAK,aAAa;AAAA,UAC3E;AACA,cAAI,eAAe,SAAS,GAAG;AAC7B,2BAAe,IAAI,OAAO,KAAK,MAAM,cAAc;AAAA,UACrD;AACA,gBAAM,aAAa,eAAe,IAAI,CAAC,MAAO,EAAE,KAAuB,IAAI,EAAE,KAAK,IAAI;AACtF,gBAAM,WAAW,KAAK,qBAAqB,MAAM;AACjD,cAAI;AACJ,cAAI,eAAe,SAAS,SAAS,IAAI,GAAG;AAC1C,gCAAqB,OAAO,KAA8B,cAAe,CAAC;AAAA,UAC5E;AACA,gBAAM,aAAa,qBAAqB;AACxC,gBAAM,gBAAgB,SAAS,KAAK,WAAW,cAAc,IAAI,MAAM;AACvE,iBAAO;AAAA,YACL,YAAY,WAAW,OAAO,WAAW;AAAA,eACtC,MAAM,IAAI,aAAa,eAAe,cAAc,gBAAgB,KAAK,QAAQ,eAAe,OAAO,KAAK,IAAI,IAAI,eAAe,SAAS,IAAI,eAAe,UAAU,OAAO,EAAE;AAAA;AAAA,YAErL,CAAC,eAAe;AAAA,YAChB;AAAA,cACE,UAAU,CAAC,SAAU,GAAG,aAAa,IAAI,KAAK,KAAK,SAAS,cAAc,OAAO,OAAO,IAAK;AAAA,cAC7F,UAAU,CAAC,SAAU,GAAG,aAAa,IAAI,KAAK,KAAK,SAAS,SAAS,WAAW,IAAK;AAAA,cACrF,UAAU,CAAC,SAAU,GAAG,aAAa,IAAI,KAAK,KAAK,SAAS,cAAc,aAAa,IAAK;AAAA,cAC5F,UAAU,CAAC,SAAU,GAAG,aAAa,IAAI,KAAK,KAAK,SAAS,iBAAiB,kBAAkB,IAAK;AAAA,YACtG;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,MACT,CAAC;AAAA,MACD,UAAU,CAAC,WAAW;AACpB,YACE,GAAG,sBAAsB,MAAM,KAC/B,OAAO,QACP,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,KAClC,eAAe,IAAI,OAAO,KAAK,IAAI,GACnC;AACA,iBAAO,GAAG,QAAQ;AAAA,YAChB;AAAA,YACA,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,YACP,eAAe,IAAI,OAAO,KAAK,IAAI;AAAA,YACnC,OAAO;AAAA,YACP,OAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT,CAAC;AAAA,MACD,UAAU,CAAC,WAAW;AACpB,YAAI,GAAG,sBAAsB,MAAM,GAAG;AACpC,cACE,EAAE,OAAO,QAAQ,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,MACnD,OAAO,WAAW,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG,oBAAoB,EAAE,IAAI,KAAK,EAAE,KAAK,aAAa,UAAU,GACxG;AACA,kCAAsB;AAAA,UACxB;AAAA,QACF;AACA,eAAO;AAAA,MACT,CAAC;AAAA,IACH,CAAC,EAAE;AAEH,QAAI,uBAAuB,GAAG;AAC5B,cAAQ,MAAM,OAAO,0BAA0B,qBAAqB;AAAA,IACtE;AAEA,WAAO;AAAA,MACL;AAAA,QACE,GAAG,KAAK,mBAAmB,QAAQ,OAAO;AAAA,QAC1C,GAAG,KAAK,WAAW,OAAO,CAAC,cAAc,CAAC,GAAG,oBAAoB,SAAS,CAAC;AAAA,MAC7E;AAAA,MACA,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EAEA,qBAAqB,QAAyC;AAC5D,UAAM,EAAE,QAAQ,IAAI,KAAK;AAEzB,QAAI,OAAO,MAAM;AACf,YAAM,OAAO;AAAA,QAAS,OAAO;AAAA,QAAM,CAAC,SAClC,GAAG,aAAa,IAAI,KAAK,QAAQ,SAAS,KAAK,IAAI,IAAI,OAAO;AAAA,MAChE;AAEA,UAAI,MAAM;AACR,cAAM,WAAW,QAAQ,MAAM,cAAc,qBAAqB,KAAK,IAAI;AAE3E,YAAI,UAAU;AACZ,iBAAO;AAAA,QACT;AAEA,cAAM,SAAS,QAAQ,QAAQ,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI;AAE9E,YAAI,QAAQ;AACV,gBAAM,CAAC,IAAI,IAAI;AACf,kBAAQ,QAAQ,OAAO,IAAI;AAC3B,iBAAO,QAAQ,MAAM,IAAI,qBAAqB,KAAK,MAAM,OAAO,IAAI;AAAA,QACtE;AAAA,MACF;AAAA,IACF;AAEA,UAAM,IAAI,MAAM,uBAAuB;AAAA,EACzC;AACF;",
6
6
  "names": []
7
7
  }
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,wCAAwC,CAAC;AAC5D,OAAO,KAAK,aAAa,MAAM,+CAA+C,CAAC;AAU/E,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AAoCH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,MAAM;IAEhC,OAAO,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3D,CAAC,aAAa,CAAC,EAAE,OAAO,aAAa,CAAC;IAE9C,IAAa,IAAI,IAAI,MAAM,CAE1B;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,wCAAwC,CAAC;AAC5D,OAAO,KAAK,aAAa,MAAM,+CAA+C,CAAC;AAU/E,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AAuCH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,MAAM;IAEhC,OAAO,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3D,CAAC,aAAa,CAAC,EAAE,OAAO,aAAa,CAAC;IAE9C,IAAa,IAAI,IAAI,MAAM,CAE1B;CACF"}
package/index.js CHANGED
@@ -4,7 +4,10 @@ if (!("Iterator" in globalThis)) {
4
4
  const { installIntoGlobal } = await import("iterator-helpers-polyfill");
5
5
  installIntoGlobal();
6
6
  }
7
- const SIGNAL_CLASSES = ["#/components/schemas/com.vaadin.hilla.signals.NumberSignal"];
7
+ const SIGNAL_CLASSES = [
8
+ "#/components/schemas/com.vaadin.hilla.signals.NumberSignal",
9
+ "#/components/schemas/com.vaadin.hilla.signals.ValueSignal"
10
+ ];
8
11
  function extractEndpointMethodsWithSignalsAsReturnType(storage) {
9
12
  return Object.entries(storage.api.paths).filter(([_, pathObject]) => {
10
13
  const response200 = pathObject?.post?.responses["200"];
package/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["src/index.ts"],
4
- "sourcesContent": ["import Plugin from '@vaadin/hilla-generator-core/Plugin.js';\nimport type SharedStorage from '@vaadin/hilla-generator-core/SharedStorage.js';\nimport type { OpenAPIV3 } from 'openapi-types';\nimport SignalProcessor from './SignalProcessor.js';\n\n// Polyfill for iterator helpers (Stage 3 proposal)\nif (!('Iterator' in globalThis)) {\n const { installIntoGlobal } = await import('iterator-helpers-polyfill');\n installIntoGlobal();\n}\n\nexport type PathSignalType = Readonly<{\n path: string;\n signalType: string;\n}>;\n\nconst SIGNAL_CLASSES = ['#/components/schemas/com.vaadin.hilla.signals.NumberSignal'];\n\nfunction extractEndpointMethodsWithSignalsAsReturnType(storage: SharedStorage): PathSignalType[] {\n return Object.entries(storage.api.paths)\n .filter(([_, pathObject]) => {\n const response200 = pathObject?.post?.responses['200'];\n return response200 && !('$ref' in response200);\n })\n .flatMap(([path, pathObject]) => {\n const response200 = pathObject?.post?.responses['200'];\n const responseSchema = (response200 as OpenAPIV3.ResponseObject).content?.['application/json']?.schema;\n\n return responseSchema && 'anyOf' in responseSchema\n ? responseSchema.anyOf\n ?.filter((c) => '$ref' in c && c.$ref && SIGNAL_CLASSES.includes(c.$ref))\n .map((c: OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject) => ({\n path,\n signalType: '$ref' in c ? c.$ref : '',\n }))\n : [];\n })\n .filter((signalArray) => signalArray != null);\n}\n\nfunction groupByService(signals: readonly PathSignalType[]): Map<string, Map<string, string>> {\n return signals.reduce((serviceMap, signal) => {\n const [_, service, method] = signal.path.split('/');\n const serviceMethods = serviceMap.get(service) ?? new Map<string, string>();\n serviceMethods.set(method, signal.signalType);\n serviceMap.set(service, serviceMethods);\n return serviceMap;\n }, new Map<string, Map<string, string>>());\n}\n\nexport default class SignalsPlugin extends Plugin {\n // eslint-disable-next-line @typescript-eslint/require-await\n override async execute(sharedStorage: SharedStorage): Promise<void> {\n const methodsWithSignals = extractEndpointMethodsWithSignalsAsReturnType(sharedStorage);\n const services = groupByService(methodsWithSignals);\n services.forEach((methods, service) => {\n const index = sharedStorage.sources.findIndex((source) => source.fileName === `${service}.ts`);\n if (index >= 0) {\n sharedStorage.sources[index] = new SignalProcessor(\n service,\n methods,\n sharedStorage.sources[index],\n this,\n ).process();\n }\n });\n }\n\n declare ['constructor']: typeof SignalsPlugin;\n\n override get path(): string {\n return import.meta.url;\n }\n}\n"],
5
- "mappings": "AAAA,OAAO,YAAY;AAGnB,OAAO,qBAAqB;AAG5B,IAAI,EAAE,cAAc,aAAa;AAC/B,QAAM,EAAE,kBAAkB,IAAI,MAAM,OAAO,2BAA2B;AACtE,oBAAkB;AACpB;AAOA,MAAM,iBAAiB,CAAC,4DAA4D;AAEpF,SAAS,8CAA8C,SAA0C;AAC/F,SAAO,OAAO,QAAQ,QAAQ,IAAI,KAAK,EACpC,OAAO,CAAC,CAAC,GAAG,UAAU,MAAM;AAC3B,UAAM,cAAc,YAAY,MAAM,UAAU,KAAK;AACrD,WAAO,eAAe,EAAE,UAAU;AAAA,EACpC,CAAC,EACA,QAAQ,CAAC,CAAC,MAAM,UAAU,MAAM;AAC/B,UAAM,cAAc,YAAY,MAAM,UAAU,KAAK;AACrD,UAAM,iBAAkB,YAAyC,UAAU,kBAAkB,GAAG;AAEhG,WAAO,kBAAkB,WAAW,iBAChC,eAAe,OACX,OAAO,CAAC,MAAM,UAAU,KAAK,EAAE,QAAQ,eAAe,SAAS,EAAE,IAAI,CAAC,EACvE,IAAI,CAAC,OAA2D;AAAA,MAC/D;AAAA,MACA,YAAY,UAAU,IAAI,EAAE,OAAO;AAAA,IACrC,EAAE,IACJ,CAAC;AAAA,EACP,CAAC,EACA,OAAO,CAAC,gBAAgB,eAAe,IAAI;AAChD;AAEA,SAAS,eAAe,SAAsE;AAC5F,SAAO,QAAQ,OAAO,CAAC,YAAY,WAAW;AAC5C,UAAM,CAAC,GAAG,SAAS,MAAM,IAAI,OAAO,KAAK,MAAM,GAAG;AAClD,UAAM,iBAAiB,WAAW,IAAI,OAAO,KAAK,oBAAI,IAAoB;AAC1E,mBAAe,IAAI,QAAQ,OAAO,UAAU;AAC5C,eAAW,IAAI,SAAS,cAAc;AACtC,WAAO;AAAA,EACT,GAAG,oBAAI,IAAiC,CAAC;AAC3C;AAEA,MAAO,sBAAoC,OAAO;AAAA;AAAA,EAEhD,MAAe,QAAQ,eAA6C;AAClE,UAAM,qBAAqB,8CAA8C,aAAa;AACtF,UAAM,WAAW,eAAe,kBAAkB;AAClD,aAAS,QAAQ,CAAC,SAAS,YAAY;AACrC,YAAM,QAAQ,cAAc,QAAQ,UAAU,CAAC,WAAW,OAAO,aAAa,GAAG,OAAO,KAAK;AAC7F,UAAI,SAAS,GAAG;AACd,sBAAc,QAAQ,KAAK,IAAI,IAAI;AAAA,UACjC;AAAA,UACA;AAAA,UACA,cAAc,QAAQ,KAAK;AAAA,UAC3B;AAAA,QACF,EAAE,QAAQ;AAAA,MACZ;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAIA,IAAa,OAAe;AAC1B,WAAO,YAAY;AAAA,EACrB;AACF;",
4
+ "sourcesContent": ["import Plugin from '@vaadin/hilla-generator-core/Plugin.js';\nimport type SharedStorage from '@vaadin/hilla-generator-core/SharedStorage.js';\nimport type { OpenAPIV3 } from 'openapi-types';\nimport SignalProcessor from './SignalProcessor.js';\n\n// Polyfill for iterator helpers (Stage 3 proposal)\nif (!('Iterator' in globalThis)) {\n const { installIntoGlobal } = await import('iterator-helpers-polyfill');\n installIntoGlobal();\n}\n\nexport type PathSignalType = Readonly<{\n path: string;\n signalType: string;\n}>;\n\nconst SIGNAL_CLASSES = [\n '#/components/schemas/com.vaadin.hilla.signals.NumberSignal',\n '#/components/schemas/com.vaadin.hilla.signals.ValueSignal',\n];\n\nfunction extractEndpointMethodsWithSignalsAsReturnType(storage: SharedStorage): PathSignalType[] {\n return Object.entries(storage.api.paths)\n .filter(([_, pathObject]) => {\n const response200 = pathObject?.post?.responses['200'];\n return response200 && !('$ref' in response200);\n })\n .flatMap(([path, pathObject]) => {\n const response200 = pathObject?.post?.responses['200'];\n const responseSchema = (response200 as OpenAPIV3.ResponseObject).content?.['application/json']?.schema;\n\n return responseSchema && 'anyOf' in responseSchema\n ? responseSchema.anyOf\n ?.filter((c) => '$ref' in c && c.$ref && SIGNAL_CLASSES.includes(c.$ref))\n .map((c: OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject) => ({\n path,\n signalType: '$ref' in c ? c.$ref : '',\n }))\n : [];\n })\n .filter((signalArray) => signalArray != null);\n}\n\nfunction groupByService(signals: readonly PathSignalType[]): Map<string, Map<string, string>> {\n return signals.reduce((serviceMap, signal) => {\n const [_, service, method] = signal.path.split('/');\n const serviceMethods = serviceMap.get(service) ?? new Map<string, string>();\n serviceMethods.set(method, signal.signalType);\n serviceMap.set(service, serviceMethods);\n return serviceMap;\n }, new Map<string, Map<string, string>>());\n}\n\nexport default class SignalsPlugin extends Plugin {\n // eslint-disable-next-line @typescript-eslint/require-await\n override async execute(sharedStorage: SharedStorage): Promise<void> {\n const methodsWithSignals = extractEndpointMethodsWithSignalsAsReturnType(sharedStorage);\n const services = groupByService(methodsWithSignals);\n services.forEach((methods, service) => {\n const index = sharedStorage.sources.findIndex((source) => source.fileName === `${service}.ts`);\n if (index >= 0) {\n sharedStorage.sources[index] = new SignalProcessor(\n service,\n methods,\n sharedStorage.sources[index],\n this,\n ).process();\n }\n });\n }\n\n declare ['constructor']: typeof SignalsPlugin;\n\n override get path(): string {\n return import.meta.url;\n }\n}\n"],
5
+ "mappings": "AAAA,OAAO,YAAY;AAGnB,OAAO,qBAAqB;AAG5B,IAAI,EAAE,cAAc,aAAa;AAC/B,QAAM,EAAE,kBAAkB,IAAI,MAAM,OAAO,2BAA2B;AACtE,oBAAkB;AACpB;AAOA,MAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AACF;AAEA,SAAS,8CAA8C,SAA0C;AAC/F,SAAO,OAAO,QAAQ,QAAQ,IAAI,KAAK,EACpC,OAAO,CAAC,CAAC,GAAG,UAAU,MAAM;AAC3B,UAAM,cAAc,YAAY,MAAM,UAAU,KAAK;AACrD,WAAO,eAAe,EAAE,UAAU;AAAA,EACpC,CAAC,EACA,QAAQ,CAAC,CAAC,MAAM,UAAU,MAAM;AAC/B,UAAM,cAAc,YAAY,MAAM,UAAU,KAAK;AACrD,UAAM,iBAAkB,YAAyC,UAAU,kBAAkB,GAAG;AAEhG,WAAO,kBAAkB,WAAW,iBAChC,eAAe,OACX,OAAO,CAAC,MAAM,UAAU,KAAK,EAAE,QAAQ,eAAe,SAAS,EAAE,IAAI,CAAC,EACvE,IAAI,CAAC,OAA2D;AAAA,MAC/D;AAAA,MACA,YAAY,UAAU,IAAI,EAAE,OAAO;AAAA,IACrC,EAAE,IACJ,CAAC;AAAA,EACP,CAAC,EACA,OAAO,CAAC,gBAAgB,eAAe,IAAI;AAChD;AAEA,SAAS,eAAe,SAAsE;AAC5F,SAAO,QAAQ,OAAO,CAAC,YAAY,WAAW;AAC5C,UAAM,CAAC,GAAG,SAAS,MAAM,IAAI,OAAO,KAAK,MAAM,GAAG;AAClD,UAAM,iBAAiB,WAAW,IAAI,OAAO,KAAK,oBAAI,IAAoB;AAC1E,mBAAe,IAAI,QAAQ,OAAO,UAAU;AAC5C,eAAW,IAAI,SAAS,cAAc;AACtC,WAAO;AAAA,EACT,GAAG,oBAAI,IAAiC,CAAC;AAC3C;AAEA,MAAO,sBAAoC,OAAO;AAAA;AAAA,EAEhD,MAAe,QAAQ,eAA6C;AAClE,UAAM,qBAAqB,8CAA8C,aAAa;AACtF,UAAM,WAAW,eAAe,kBAAkB;AAClD,aAAS,QAAQ,CAAC,SAAS,YAAY;AACrC,YAAM,QAAQ,cAAc,QAAQ,UAAU,CAAC,WAAW,OAAO,aAAa,GAAG,OAAO,KAAK;AAC7F,UAAI,SAAS,GAAG;AACd,sBAAc,QAAQ,KAAK,IAAI,IAAI;AAAA,UACjC;AAAA,UACA;AAAA,UACA,cAAc,QAAQ,KAAK;AAAA,UAC3B;AAAA,QACF,EAAE,QAAQ;AAAA,MACZ;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAIA,IAAa,OAAe;AAC1B,WAAO,YAAY;AAAA,EACrB;AACF;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vaadin/hilla-generator-plugin-signals",
3
- "version": "24.5.0-alpha9",
3
+ "version": "24.5.0-beta1",
4
4
  "description": "A Hilla TypeScript Generator plugin to add Shared Signals support",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -50,17 +50,15 @@
50
50
  "publishConfig": {
51
51
  "access": "public"
52
52
  },
53
- "peerDependencies": {
54
- "@vaadin/hilla-generator-plugin-client": "24.5.0-alpha9"
55
- },
56
53
  "dependencies": {
57
- "@vaadin/hilla-generator-core": "24.5.0-alpha9",
58
- "@vaadin/hilla-generator-plugin-backbone": "24.5.0-alpha9",
59
- "@vaadin/hilla-generator-utils": "24.5.0-alpha9",
54
+ "@vaadin/hilla-generator-core": "24.5.0-beta1",
55
+ "@vaadin/hilla-generator-plugin-backbone": "24.5.0-beta1",
56
+ "@vaadin/hilla-generator-plugin-client": "24.5.0-beta1",
57
+ "@vaadin/hilla-generator-utils": "24.5.0-beta1",
60
58
  "fast-deep-equal": "^3.1.3",
61
59
  "iterator-helpers-polyfill": "^3.0.1",
62
60
  "openapi-types": "^12.1.3",
63
- "typescript": "5.5.2"
61
+ "typescript": "5.6.2"
64
62
  },
65
63
  "devDependencies": {
66
64
  "@types/chai": "^4.3.6",
@@ -68,8 +66,8 @@
68
66
  "@types/node": "^20.7.1",
69
67
  "@types/sinon": "^10.0.17",
70
68
  "@types/sinon-chai": "^3.2.10",
71
- "@vaadin/hilla-generator-core": "24.5.0-alpha9",
72
- "@vaadin/hilla-generator-plugin-client": "24.5.0-alpha9",
69
+ "@vaadin/hilla-generator-core": "24.5.0-beta1",
70
+ "@vaadin/hilla-generator-plugin-client": "24.5.0-beta1",
73
71
  "c8": "^8.0.1",
74
72
  "chai": "^4.3.10",
75
73
  "concurrently": "^8.2.1",