# 6.2 Hello world program v2

## TS and JS code

We'll continue to use Typescript for our examples. The program is the same, with some additions:

* There are two imports with one import has another inside it
* There is a synchronous op
* There is an asynchronous op
* Also, there are some console logs which are also synchronous ops

The file name is `helloV2.ts.`

The location of the source file is:

`/Users/mayankc/Work/source/denoExamples/helloV2.ts`

Here is the code that we'll use to understand some new concepts:

```javascript
import { nanoid } from "npm:nanoid";
import { getMachineId } from "https://deno.land/x/machine_id/mod.ts";

const id = nanoid();
const machineId = await getMachineId();
const homeDir = Deno.env.get("HOME");

function printNumber(input: number) {
  console.log(input);
}

function printString(input: string) {
  console.log(input);
}

printNumber(1);
printString("One");
console.log("Nanoid=", id, ", MachineId=", machineId, ", homeDir=", homeDir);

```

This remains a straightforward program consisting of a single TypeScript file. At the program's outset, two imports are used to access ES modules:&#x20;

* nanoid
* machine\_id

The 'nanoid' module is sourced from the NPM registry, while the 'machine\_id' module is acquired from Deno's registry.

The program can be partitioned into three distinct segments:

1. _Import Section_: The initial portion encompasses the two imports, serving the purpose of illustrating the internal mechanics of the import process.
2. _Synchronous and Asynchronous Operations_: This phase involves invocations of both synchronous and asynchronous operations. The operations involving 'nanoid' and 'env.get' are categorized as synchronous, whereas the 'getMachineId' operation is asynchronous in nature.
3. _TypeScript Code_: The subsequent part entails the inclusion of code extracted from 'helloLog.ts', showcasing the conversion process from TypeScript to JavaScript. This step is taken to offer a demonstration of how TypeScript code translates into its JavaScript equivalent.

Following the conversion to JavaScript, the program's structure transforms as illustrated below:

```javascript
import { nanoid } from "npm:nanoid";
import { getMachineId } from "https://deno.land/x/machine_id/mod.ts";
const id = nanoid();
const machineId = await getMachineId();
const homeDir = Deno.env.get("HOME");
function printNumber(input) {
  console.log(input);
}
function printString(input) {
  console.log(input);
}
printNumber(1);
printString("One");
console.log("Nanoid=", id, ", MachineId=", machineId, ", homeDir=", homeDir);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vVXNlcnMvbWF5YW5rYy9Xb3JrL3NvdXJjZS9kZW5vRXhhbXBsZXMvaGVsbG9WMi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBuYW5vaWQgfSBmcm9tIFwibnBtOm5hbm9pZFwiO1xuaW1wb3J0IHsgZ2V0TWFjaGluZUlkIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3gvbWFjaGluZV9pZC9tb2QudHNcIjtcblxuY29uc3QgaWQgPSBuYW5vaWQoKTtcbmNvbnN0IG1hY2hpbmVJZCA9IGF3YWl0IGdldE1hY2hpbmVJZCgpO1xuY29uc3QgaG9tZURpciA9IERlbm8uZW52LmdldChcIkhPTUVcIik7XG5cbmZ1bmN0aW9uIHByaW50TnVtYmVyKGlucHV0OiBudW1iZXIpIHtcbiAgY29uc29sZS5sb2coaW5wdXQpO1xufVxuXG5mdW5jdGlvbiBwcmludFN0cmluZyhpbnB1dDogc3RyaW5nKSB7XG4gIGNvbnNvbGUubG9nKGlucHV0KTtcbn1cblxucHJpbnROdW1iZXIoMSk7XG5wcmludFN0cmluZyhcIk9uZVwiKTtcbmNvbnNvbGUubG9nKFwiTmFub2lkPVwiLCBpZCwgXCIsIE1hY2hpbmVJZD1cIiwgbWFjaGluZUlkLCBcIiwgaG9tZURpcj1cIiwgaG9tZURpcik7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxNQUFNLFFBQVEsYUFBYTtBQUNwQyxTQUFTLFlBQVksUUFBUSx3Q0FBd0M7QUFFckUsTUFBTSxLQUFLO0FBQ1gsTUFBTSxZQUFZLE1BQU07QUFDeEIsTUFBTSxVQUFVLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQztBQUU3QixTQUFTLFlBQVksS0FBYTtFQUNoQyxRQUFRLEdBQUcsQ0FBQztBQUNkO0FBRUEsU0FBUyxZQUFZLEtBQWE7RUFDaEMsUUFBUSxHQUFHLENBQUM7QUFDZDtBQUVBLFlBQVk7QUFDWixZQUFZO0FBQ1osUUFBUSxHQUFHLENBQUMsV0FBVyxJQUFJLGdCQUFnQixXQUFXLGNBQWMifQ==
```

This section discusses the similarities and slight differences in the current version of the 'hello world' program compared to the previous one. The primary changes revolve around imports and operations (ops). It's worth noting that some ops, like `console.log`, were present in the previous version as well.&#x20;

\--

Let's take a moment to review. The primary worker in Deno operates through two main phases:&#x20;

* Module loading
* Module evaluation

The process of loading a module can vary due to the presence of imports.

Now, we will discuss creating a module graph for a program with imports. This involves showing how modules connect and interact in a program.&#x20;

To create a module graph, Deno analyzes the code to find all imported modules and their dependencies. It then organizes these modules in a structured way, showing their connections.
