From 191bdb1890eb15440a55bdba633102cdd7f062bf Mon Sep 17 00:00:00 2001 From: Brad Rogers Date: Mon, 28 Jun 2021 14:23:52 -0400 Subject: [PATCH] Fix imports for TS autogenerated imports (#239) * Update TSD client to only import namespaces that have routes --- stone/backends/tsd_client.py | 7 ++++++- stone/backends/tsd_helpers.py | 3 +++ stone/backends/tsd_types.py | 8 +++----- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/stone/backends/tsd_client.py b/stone/backends/tsd_client.py index 5140946c..3699cab1 100644 --- a/stone/backends/tsd_client.py +++ b/stone/backends/tsd_client.py @@ -22,6 +22,7 @@ fmt_func, fmt_tag, fmt_type, + get_data_types_for_namespace, ) from stone.ir import Void @@ -154,7 +155,11 @@ def generate(self, api): self.emit_raw(template[r_end + 1:t_end] + ('\n' if not t_ends_with_newline else '')) def _generate_import(self, api, type_file): - namespaces = ", ".join(map(lambda namespace: namespace.name, api.namespaces.values())) + # identify which routes belong to + namespaces_with_types = filter( + lambda namespace: len(get_data_types_for_namespace(namespace)) != 0, + api.namespaces.values()) + namespaces = ", ".join(map(lambda namespace: namespace.name, namespaces_with_types)) self.emit("import { %s } from '%s';" % (namespaces, type_file)) def _generate_routes(self, api, spaces_per_indent, indent_level): diff --git a/stone/backends/tsd_helpers.py b/stone/backends/tsd_helpers.py index d0bce5ce..8c88d3e5 100644 --- a/stone/backends/tsd_helpers.py +++ b/stone/backends/tsd_helpers.py @@ -179,3 +179,6 @@ def generate_imports_for_referenced_namespaces(backend, namespace, module_name_p ) ) backend.emit() + +def get_data_types_for_namespace(namespace): + return namespace.data_types + namespace.aliases diff --git a/stone/backends/tsd_types.py b/stone/backends/tsd_types.py index a0949496..6912fe65 100644 --- a/stone/backends/tsd_types.py +++ b/stone/backends/tsd_types.py @@ -38,6 +38,7 @@ fmt_type_name, fmt_union, generate_imports_for_referenced_namespaces, + get_data_types_for_namespace, ) @@ -186,15 +187,12 @@ def _read_template(self): else: raise AssertionError('TypeScript template file does not exist.') - def _get_data_types(self, namespace): - return namespace.data_types + namespace.aliases - def _generate_base_namespace_module(self, namespace_list, filename, template, extra_args, exclude_error_types=False): # Skip namespaces that do not contain types. - if all([len(self._get_data_types(ns)) == 0 for ns in namespace_list]): + if all([len(get_data_types_for_namespace(ns)) == 0 for ns in namespace_list]): return spaces_per_indent = self.args.spaces_per_indent @@ -238,7 +236,7 @@ def _generate_base_namespace_module(self, namespace_list, filename, def _generate_types(self, namespace, spaces_per_indent, extra_args): self.cur_namespace = namespace # Count aliases as data types too! - data_types = self._get_data_types(namespace) + data_types = get_data_types_for_namespace(namespace) # Skip namespaces that do not contain types. if len(data_types) == 0: return