@tdk-landscape/tdk-cli-core 1.3.136 → 1.3.137

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 (31) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/cli/dist/commands/doctor.js +11 -11
  3. package/cli/dist/commands/resource.js +15 -14
  4. package/cli/dist/generator/template-engine.js +10 -7
  5. package/cli/dist/utils/constants.js +22 -3
  6. package/cli/dist/utils/doctor-report.js +2 -1
  7. package/cli/dist/utils/doctor-runtime.js +6 -1
  8. package/cli/dist/utils/doctor-wiring.js +5 -4
  9. package/cli/dist/utils/generated-paths.js +3 -2
  10. package/cli/dist/utils/project-config-defaults.js +2 -1
  11. package/cli/dist/utils/project-features.js +5 -13
  12. package/cli/dist/utils/resource-features.js +2 -1
  13. package/cli/dist/utils/services.js +2 -2
  14. package/cli/dist/utils/shared-platform-postgres.js +6 -5
  15. package/cli/dist/utils/smoke.js +3 -2
  16. package/cli/dist/utils/stack-features.js +5 -2
  17. package/cli/dist-bundle/chunk-DUOGIS2Y.js +315 -0
  18. package/cli/dist-bundle/cli.js +207 -207
  19. package/cli/dist-bundle/{cold-preflight-NXFER2W6.js → cold-preflight-UATSRM67.js} +1 -1
  20. package/cli/package.json +1 -1
  21. package/engine/assets/docker/wake-gateway/server.ts +3 -3
  22. package/engine/topologies/platform/docker/compose/compose.star +4 -4
  23. package/engine/topologies/platform/docker/constants.star +25 -0
  24. package/engine/topologies/platform/docker/networking/traefik_static_routes.star +3 -1
  25. package/engine/topologies/tilt/generators/vite/templates.star +13 -9
  26. package/engine/topologies/tilt/resources/infra-loader.star +20 -14
  27. package/engine/topologies/tilt/resources/orchestrator/apply_compose_resource_registration.star +4 -4
  28. package/engine/topologies/tilt/resources/orchestrator/generators/env.star +3 -2
  29. package/engine/topologies/tilt/resources/orchestrator/generators/frontend.star +2 -1
  30. package/package.json +1 -1
  31. package/cli/dist-bundle/chunk-I63IBPUZ.js +0 -315
@@ -1,2 +1,2 @@
1
1
  import{createRequire as __tdkRequire}from'node:module';const require=__tdkRequire(import.meta.url);
2
- import{ib as a,jb as b,kb as c,lb as d,mb as e}from"./chunk-I63IBPUZ.js";import"./chunk-OBQS5CYC.js";import"./chunk-6EA4DGCY.js";export{e as assertMachineReadyOrExit,d as formatColdPreflight,a as nodeTooOld,b as requireVerifiedDockerVersions,c as runColdPreflight};
2
+ import{mb as a,nb as b,ob as c,pb as d,qb as e}from"./chunk-DUOGIS2Y.js";import"./chunk-OBQS5CYC.js";import"./chunk-6EA4DGCY.js";export{e as assertMachineReadyOrExit,d as formatColdPreflight,a as nodeTooOld,b as requireVerifiedDockerVersions,c as runColdPreflight};
package/cli/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "tdk-cli-internal",
3
3
  "private": true,
4
- "version": "1.3.136",
4
+ "version": "1.3.137",
5
5
  "description": "TDK CLI — start services on your laptop.",
6
6
  "keywords": [
7
7
  "tdk",
@@ -19,12 +19,12 @@
19
19
  * the resource name; Compose derives it as
20
20
  * <project>-<service>-<replica>, confirmed empirically
21
21
  * against a live TDK container, e.g.
22
- * "analytics-autogenerated-data-governance-api-1"
22
+ * "tdk-erp-system-analytics-autogenerated-data-governance-api-1"
23
23
  * for the "data-governance-api" resource).
24
24
  * X-Wake-Deps Comma-separated "resourceName=containerName" pairs
25
25
  * for required dependencies (task 1.5: Tilt never
26
26
  * cascades a trigger to these on its own).
27
- * X-Wake-Compose-Project The resource's Compose project (e.g. "analytics-autogenerated").
27
+ * X-Wake-Compose-Project The resource's Compose project (e.g. "tdk-erp-system-analytics-autogenerated").
28
28
  * X-Wake-Compose-Files Comma-separated absolute compose file paths, the
29
29
  * same ones Tilt's `<resource>-run-only` resource
30
30
  * passes. The project root is mounted into this
@@ -32,7 +32,7 @@
32
32
  * paths inside those files resolve exactly as for Tilt.
33
33
  * X-Wake-Env-File Absolute path of the project's .env (optional).
34
34
  * X-Wake-Image The image the compose service declares
35
- * (<service>_<resource>:dev).
35
+ * (<project>_<stack>_<resource>:dev).
36
36
  * X-Wake-Timeout-Ms, X-Wake-Proxy-Port, X-Wake-Session-Duration
37
37
  * X-Wake-Respond-Within-Ms How long to hold the request before answering
38
38
  * 503 + Retry-After while the start continues in the
@@ -18,7 +18,7 @@ OUTPUT = struct(AUTOGENERATED_FOLDER = ".autogenerated")
18
18
  # === END INLINED CONSTANTS ===
19
19
 
20
20
 
21
- load("./compose_helpers.star", "with_runtime_image_tag", "compose_build_config")
21
+ load("./compose_helpers.star", "compose_build_config")
22
22
  load("../networking/traefik.star", "get_frontend_traefik_labels", "get_backend_traefik_labels")
23
23
  load("../networking/api_path_constants.star", "get_api_path_for_domain", "get_frontend_base_path")
24
24
  load("../secrets/infisical.star", "get_infisical_environment_vars")
@@ -78,7 +78,7 @@ def _compute_env_file_rel_path(resource_path, full_resource_path, env_filename):
78
78
  def generate_frontend_compose(resource_path, resource_name, res, manifest=None):
79
79
  """Generate frontend docker-compose entry with Traefik routing."""
80
80
  res_name = res['name']
81
- image_name = with_runtime_image_tag(resource_name + '_' + res_name)
81
+ image_name = PlatformDockerConstants.app_image_name(resource_name, res_name)
82
82
  stack = manifest.get('stack', resource_name) if manifest else resource_name
83
83
 
84
84
  target_path = res.get('target_path', manifest.get('target_path', '/usr/share/nginx/html'))
@@ -338,7 +338,7 @@ def _generate_single_backend_entry(resource_path, resource_name, res, manifest,
338
338
  image_name=(
339
339
  manifest.get('image')
340
340
  if manifest and manifest.get('appType') == 'bring-your-own' and manifest.get('image')
341
- else with_runtime_image_tag(resource_name + '_' + res_name)
341
+ else PlatformDockerConstants.app_image_name(resource_name, res_name)
342
342
  ),
343
343
  build_config=build_config,
344
344
  ports_section=ports_section,
@@ -541,7 +541,7 @@ def generate_migrator_compose(resource_path, resource_name, dockerfile_path=None
541
541
  str: Generated docker-compose YAML content
542
542
  """
543
543
  migrator_name = resource_name + '-db-migrator'
544
- image_name = with_runtime_image_tag(resource_name + '-db-migrator')
544
+ image_name = PlatformDockerConstants.migrator_image_name(resource_name)
545
545
 
546
546
  # Use PROJECT_NAME from PlatformDockerConstants for portable database naming
547
547
  db_name = PlatformDockerConstants.PROJECT_NAME + '_' + resource_name
@@ -91,6 +91,27 @@ VERDACCIO_CONNECT_NETWORK_RESOURCE = "verdaccio-connect-network"
91
91
  VERDACCIO_DOMAIN = "verdaccio"
92
92
  VERDACCIO_TRAEFIK_HOST = "verdaccio.localhost"
93
93
 
94
+ # Docker names for one stack's generated services. Every name carries the TDK
95
+ # project, so two projects that both have a stack called `people` (two Tilt
96
+ # instances on one Docker daemon) never share a Compose project, container or
97
+ # image. Without it, the second `tdk up` runs `--remove-orphans` against the
98
+ # first project's containers and overwrites its images.
99
+ def compose_project_name(stack):
100
+ """Compose project for a stack: <project>-<stack>-autogenerated (e.g. tdk-erp-system-analytics-autogenerated)."""
101
+ return PROJECT_NAME_HYPHEN + "-" + stack + "-autogenerated"
102
+
103
+ def app_image_name(stack, res_name):
104
+ """Image tag (:dev) of one service: <project>_<stack>_<resource>:dev."""
105
+ return PROJECT_NAME + "_" + stack + "_" + res_name + ":dev"
106
+
107
+ def infra_compose_project_name(infra):
108
+ """Compose project for a shared platform stack: <project>-<infra> (e.g. tdk-erp-system-database-management)."""
109
+ return PROJECT_NAME_HYPHEN + "-" + infra
110
+
111
+ def migrator_image_name(stack):
112
+ """Image tag (:dev) of a stack's migrator: <project>_<stack>-db-migrator:dev."""
113
+ return PROJECT_NAME + "_" + stack + "-db-migrator:dev"
114
+
94
115
  # Helper function to generate database name
95
116
  def get_db_name(domain_or_service):
96
117
  """Returns standardized database name for a domain or service."""
@@ -176,6 +197,10 @@ PlatformDockerConstants = struct(
176
197
  VERDACCIO_TRAEFIK_HOST = VERDACCIO_TRAEFIK_HOST,
177
198
  DB_CONFIG = DB_CONFIG,
178
199
  get_db_name = get_db_name,
200
+ compose_project_name = compose_project_name,
201
+ infra_compose_project_name = infra_compose_project_name,
202
+ app_image_name = app_image_name,
203
+ migrator_image_name = migrator_image_name,
179
204
  get_database_url_base = get_database_url_base,
180
205
  get_database_url_for_env = get_database_url_for_env,
181
206
  get_database_url_for_shell = get_database_url_for_shell,
@@ -59,7 +59,9 @@ def _container_name(compose_project_name, res_name):
59
59
  """Docker Compose's own naming convention: <project>-<service>-<replica>.
60
60
 
61
61
  Confirmed empirically against a live TDK container (analytics-autogenerated
62
- -data-governance-api-1) -- see design.md D2 Context. Always replica 1: a
62
+ -data-governance-api-1) -- see design.md D2 Context. Compose projects are now
63
+ <project>-<stack>-autogenerated, so the name starts with the TDK project too
64
+ (tdk-erp-system-analytics-autogenerated-data-governance-api-1). Always replica 1: a
63
65
  deferred resource's replica count is unrelated to which single instance
64
66
  the wake gateway needs to address."""
65
67
  return compose_project_name + "-" + res_name + "-1"
@@ -22,6 +22,10 @@ def _load_npm_scope():
22
22
 
23
23
  _NPM_SCOPE = _load_npm_scope()
24
24
 
25
+ def _with_npm_scope(template):
26
+ # Fill in the scope here so callers' .format() calls need no extra argument; '{npm_scope}' is not a .format() field afterwards.
27
+ return template.replace('{npm_scope}', _NPM_SCOPE)
28
+
25
29
  TEMPLATE_VITE_BACKEND_WITH_NODE = """{header}
26
30
  import path from 'node:path';
27
31
  import {{ VitePluginNode }} from 'vite-plugin-node';
@@ -135,7 +139,7 @@ export default defineConfig({{
135
139
  }});
136
140
  """
137
141
 
138
- TEMPLATE_VITE_LIBRARY = """{header}
142
+ TEMPLATE_VITE_LIBRARY = _with_npm_scope("""{header}
139
143
  import {{ resolve }} from 'node:path';
140
144
  {plugin_imports}
141
145
  import {{ defineConfig }} from 'vitest/config';
@@ -164,7 +168,7 @@ export default defineConfig({{
164
168
  rollupOptions: {{
165
169
  external: [
166
170
  /^node:.*/,
167
- /^@" + _NPM_SCOPE + "\\/.*$/,
171
+ /^@{npm_scope}\\/.*$/,
168
172
  'react',
169
173
  'react-dom',
170
174
  'react/jsx-runtime',
@@ -223,7 +227,7 @@ export default defineConfig({{
223
227
  include: ['src/**/*.{{test,spec}}.{{ts,tsx}}'],
224
228
  }},
225
229
  }});
226
- """
230
+ """)
227
231
 
228
232
  TEMPLATE_VITE_SDK = """{header}
229
233
  import {{ federation }} from '@module-federation/vite';
@@ -261,7 +265,7 @@ export default defineConfig({{
261
265
  # Environment-Specific Library Templates
262
266
  # =============================================================================
263
267
 
264
- TEMPLATE_VITE_LIBRARY_DEV = """{header}
268
+ TEMPLATE_VITE_LIBRARY_DEV = _with_npm_scope("""{header}
265
269
  import {{ resolve }} from 'node:path';
266
270
  {plugin_imports}
267
271
  import {{ defineConfig }} from 'vitest/config';
@@ -284,7 +288,7 @@ export default defineConfig({{
284
288
  rollupOptions: {{
285
289
  external: [
286
290
  /^node:.*/,
287
- /^@" + _NPM_SCOPE + "\\/.*$/,
291
+ /^@{npm_scope}\\/.*$/,
288
292
  'react',
289
293
  'react-dom',
290
294
  'react/jsx-runtime',
@@ -341,9 +345,9 @@ export default defineConfig({{
341
345
  include: ['src/**/*.{{test,spec}}.{{ts,tsx}}'],
342
346
  }},
343
347
  }});
344
- """
348
+ """)
345
349
 
346
- TEMPLATE_VITE_LIBRARY_PROD = """{header}
350
+ TEMPLATE_VITE_LIBRARY_PROD = _with_npm_scope("""{header}
347
351
  import {{ resolve }} from 'node:path';
348
352
  {plugin_imports}
349
353
  import {{ defineConfig }} from 'vitest/config';
@@ -372,7 +376,7 @@ export default defineConfig({{
372
376
  rollupOptions: {{
373
377
  external: [
374
378
  /^node:.*/,
375
- /^@" + _NPM_SCOPE + "\\/.*$/,
379
+ /^@{npm_scope}\\/.*$/,
376
380
  'react',
377
381
  'react-dom',
378
382
  'react/jsx-runtime',
@@ -430,7 +434,7 @@ export default defineConfig({{
430
434
  include: ['src/**/*.{{test,spec}}.{{ts,tsx}}'],
431
435
  }},
432
436
  }});
433
- """
437
+ """)
434
438
 
435
439
  # =============================================================================
436
440
  # Template Generation Functions
@@ -43,14 +43,20 @@ def _compose_has_service(compose_path, service_name):
43
43
  return service_name in services
44
44
 
45
45
 
46
- def _docker_compose(compose_paths, env_file):
47
- """docker_compose() wrapper: Tilt's builtin rejects env_file=None outright
48
- (it type-checks the kwarg as path|string, not Optional), so the keyword must be
49
- omitted entirely rather than passed as None when no .env file exists."""
46
+ def _docker_compose(compose_paths, env_file, infra):
47
+ """docker_compose() wrapper for a shared platform stack, in its own Compose project.
48
+
49
+ Without project_name, Compose names the project after the file's directory, so every
50
+ TDK project on one Docker daemon shares `database-management`, `traefik` and so on.
51
+ Then one project's `up` can recreate or remove another project's services.
52
+ Tilt's builtin rejects env_file=None outright (it type-checks the kwarg as path|string,
53
+ not Optional), so the keyword must be omitted entirely rather than passed as None.
54
+ """
55
+ project_name = PlatformDockerConstants.infra_compose_project_name(infra)
50
56
  if env_file:
51
- docker_compose(compose_paths, env_file=env_file)
57
+ docker_compose(compose_paths, project_name=project_name, env_file=env_file)
52
58
  else:
53
- docker_compose(compose_paths)
59
+ docker_compose(compose_paths, project_name=project_name)
54
60
 
55
61
 
56
62
  def _generate_database_management_compose():
@@ -134,7 +140,7 @@ def _register_platform_postgres(should_enable, root_prefix="", env_file=None, wr
134
140
  postgres_compose = _ensure_database_management_compose(root_prefix, write_fn)
135
141
  if _file_exists(postgres_compose):
136
142
  debug_log("INFRA: Loading postgres compose from {}".format(postgres_compose))
137
- _docker_compose(postgres_compose, env_file)
143
+ _docker_compose(postgres_compose, env_file, 'database-management')
138
144
  dc_resource('postgres', labels=['infra.tools'], resource_deps=['init-networks'], auto_init=True)
139
145
  return
140
146
  message = "Shared platform Postgres compose was not materialized at {}".format(postgres_compose)
@@ -176,7 +182,7 @@ def _load_database_management(should_enable, root_prefix="", env_file=None, writ
176
182
  messaging_compose = root_prefix + 'services/platform/messaging/docker-compose.yml'
177
183
  if _file_exists(messaging_compose):
178
184
  debug_log("INFRA: Loading messaging compose from {}".format(messaging_compose))
179
- _docker_compose(messaging_compose, env_file)
185
+ _docker_compose(messaging_compose, env_file, 'messaging')
180
186
  # Register only services present in the project compose file. Minimal
181
187
  # NATS-only examples should not need to add an unrelated Redis broker.
182
188
  if _compose_has_service(messaging_compose, 'redis'):
@@ -218,7 +224,7 @@ def _load_infisical(should_enable, root_prefix="", env_file=None):
218
224
  return
219
225
 
220
226
  print("🔐 Loading Infisical...")
221
- _docker_compose(compose_file, env_file)
227
+ _docker_compose(compose_file, env_file, 'infisical')
222
228
  dc_resource('infisical-db', labels=['infra.tools', 'secrets'], resource_deps=['init-networks'], auto_init=True)
223
229
  dc_resource('infisical-redis', labels=['infra.tools', 'secrets'], resource_deps=['init-networks'], auto_init=True)
224
230
  dc_resource('infisical', labels=['infra.tools', 'secrets'], resource_deps=['init-networks', 'infisical-db', 'infisical-redis'], auto_init=True)
@@ -245,7 +251,7 @@ def _load_standalone_traefik(root_prefix, env_file, write_fn):
245
251
  write_fn(compose_rel, content)
246
252
  compose_file = root_prefix + compose_rel if root_prefix else compose_rel
247
253
  print("🌐 Loading standalone Traefik from {}".format(compose_file))
248
- _docker_compose(compose_file, env_file)
254
+ _docker_compose(compose_file, env_file, 'traefik')
249
255
  dc_resource(
250
256
  "traefik",
251
257
  labels=["infra.tools"],
@@ -281,7 +287,7 @@ def _load_proxy(should_enable, root_prefix="", env_file=None, write_fn=None):
281
287
 
282
288
  # Use introvertic/infra traefik configuration (primary)
283
289
  # Keep legacy core.yml for network definitions during migration
284
- _docker_compose(compose_files, env_file)
290
+ _docker_compose(compose_files, env_file, 'proxy')
285
291
 
286
292
  # Traefik depends on core infrastructure being healthy (not just started) to prevent 504s
287
293
  dc_resource('traefik',
@@ -316,7 +322,7 @@ def _load_monitoring(should_enable, root_prefix="", env_file=None):
316
322
  return
317
323
 
318
324
  print("📊 Loading monitoring services...")
319
- _docker_compose(root_prefix + 'services/platform/monitoring/docker-compose.yml', env_file)
325
+ _docker_compose(root_prefix + 'services/platform/monitoring/docker-compose.yml', env_file, 'monitoring')
320
326
  for svc in ['signoz-frontend', 'signoz-otel-collector', 'signoz-query-service']:
321
327
  dc_resource(svc, labels=['observability.apm'], auto_init=True)
322
328
  dc_resource('clickhouse', labels=['observability.storage'], auto_init=True)
@@ -335,7 +341,7 @@ def _load_debezium(should_enable, root_prefix="", env_file=None):
335
341
  return
336
342
 
337
343
  print("🔄 Loading Enhanced Debezium...")
338
- _docker_compose(root_prefix + 'services/platform/cdc/docker-compose.enhanced.yml', env_file)
344
+ _docker_compose(root_prefix + 'services/platform/cdc/docker-compose.enhanced.yml', env_file, 'cdc')
339
345
  dc_resource('nats-http-bridge', labels=['cdc'], resource_deps=['nats'], auto_init=True)
340
346
  dc_resource('debezium-connect', labels=['cdc'], resource_deps=['kafka', 'postgres', 'nats-http-bridge'], auto_init=True)
341
347
  dc_resource('enhanced-connector-setup', labels=['cdc'], resource_deps=['debezium-connect', 'postgres', 'nats-http-bridge'], auto_init=False)
@@ -351,7 +357,7 @@ def _load_elk(should_enable, root_prefix="", env_file=None):
351
357
  return
352
358
 
353
359
  print("📊 Loading ELK stack...")
354
- _docker_compose(root_prefix + 'docker/elk-compose.yml', env_file)
360
+ _docker_compose(root_prefix + 'docker/elk-compose.yml', env_file, 'elk')
355
361
  dc_resource('elasticsearch', labels=['observability.elk'], auto_init=True)
356
362
  dc_resource('logstash', labels=['observability.elk', 'processor', 'logs'], resource_deps=['elasticsearch'], auto_init=True)
357
363
  dc_resource('kibana', labels=['observability.elk', 'frontend', 'dashboard'], resource_deps=['elasticsearch'], auto_init=True)
@@ -284,7 +284,7 @@ def resolve_defer_start_dependencies(manifest, resource_manifests, all_services_
284
284
  dep_service_name = all_services_map.get(resolved_dep, {}).get('name', '')
285
285
  if not dep_service_name:
286
286
  continue
287
- dependencies.append((resolved_dep, dep_service_name + '-autogenerated'))
287
+ dependencies.append((resolved_dep, PlatformDockerConstants.compose_project_name(dep_service_name)))
288
288
  return dependencies
289
289
 
290
290
 
@@ -366,8 +366,8 @@ def _build_live_update_rules(res_path, full_res_path, syncs, project_root='', la
366
366
 
367
367
 
368
368
  def _app_image_name(resource_name, res_name):
369
- """The image ref docker_build builds and the app compose service declares."""
370
- return resource_name + '_' + res_name + ':dev'
369
+ """The image ref docker_build builds and the app compose service declares (project-scoped; see constants.star)."""
370
+ return PlatformDockerConstants.app_image_name(resource_name, res_name)
371
371
 
372
372
 
373
373
  def _wake_compose_invocation(project_root, resource_path, res_name, resource_name):
@@ -670,7 +670,7 @@ def register_compose_resources(resource_config, ctx, runtime_flags, manifest_sta
670
670
  debug_log("COMPOSE: Proceeding with '{}' - creating compose resources".format(resource_name))
671
671
  should_enable = ctx['should_enable']
672
672
  write_file = ctx['write_file']
673
- compose_project_name = resource_name + '-autogenerated'
673
+ compose_project_name = PlatformDockerConstants.compose_project_name(resource_name)
674
674
 
675
675
  resource_manifests = manifest_state['resource_manifests']
676
676
  config_gen_resources = manifest_state['config_gen_resources']
@@ -77,7 +77,7 @@ def _build_dependency_env_lines(manifest):
77
77
  lines += 'VITE_{dep_key}_API_URL=http://{local_domain}{dep_api_path}\n'.format(
78
78
  dep_key=dep_key,
79
79
  dep_api_path=dep_api_path,
80
- local_domain=PlatformDockerConstants.LOCAL_DOMAIN,
80
+ local_domain=PlatformDockerConstants.API_LOCAL_DOMAIN,
81
81
  )
82
82
  return lines
83
83
 
@@ -136,7 +136,8 @@ def _generate_params_env(manifest, backend_manifest=None, write_fn=None):
136
136
  port = manifest.get('port', BASE_PORT_FRONTEND)
137
137
  # Use standardized API path from traefik helpers
138
138
  api_path = get_api_path(stack)
139
- api_url = 'http://' + PlatformDockerConstants.LOCAL_DOMAIN + api_path
139
+ # Traefik routes /api/<stack>-management only on api.<project>.localhost (see traefik.star), so the URL uses that host.
140
+ api_url = 'http://' + PlatformDockerConstants.API_LOCAL_DOMAIN + api_path
140
141
  target_filename = '/' + OUTPUT.AUTOGENERATED_FOLDER + '/.env.backend.autogenerated'
141
142
 
142
143
  # Auth configuration: the same builder Compose uses, so the two outputs cannot disagree. A missing value is None and AuthConfig
@@ -49,7 +49,7 @@ def generate_frontend_api_client(manifest, write_fn=None):
49
49
  // Source: engine/topologies/tilt/resources/orchestrator/generators/frontend.star
50
50
  // Purpose: Pre-configured API client for {stack} resource
51
51
 
52
- import {{ createApiClient }} from '@" + _NPM_SCOPE + "'/platform-api-client';
52
+ import {{ createApiClient }} from '@{npm_scope}/platform-api-client';
53
53
 
54
54
  /**
55
55
  * Pre-configured API client for {stack} resource
@@ -68,6 +68,7 @@ export const apiClient = createApiClient({{
68
68
  export default apiClient;
69
69
  '''.format(
70
70
  stack=stack,
71
+ npm_scope=_NPM_SCOPE,
71
72
  api_path=api_path,
72
73
  local_domain=PlatformDockerConstants.API_LOCAL_DOMAIN,
73
74
  )
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tdk-landscape/tdk-cli-core",
3
- "version": "1.3.136",
3
+ "version": "1.3.137",
4
4
  "description": "TDK CLI — start services on your laptop.",
5
5
  "homepage": "https://tdk-landscape.github.io/tdk-website",
6
6
  "repository": {