diff --git a/.envrc b/.envrc
new file mode 100644
index 0000000..3550a30
--- /dev/null
+++ b/.envrc
@@ -0,0 +1 @@
+use flake
diff --git a/.gitignore b/.gitignore
index 485dee6..52fa9ef 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
.idea
+.direnv
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..abd9040
--- /dev/null
+++ b/README.md
@@ -0,0 +1,4 @@
+# Project attached to cours-420-301-ah
+
+All the public classes can be accessed via `` and documentation is
+available at https://didiercrunch.github.io/cours-420-301-ah/.
diff --git a/docs/compound_index.html b/docs/compound_index.html
index fb6fcb5..c72cc32 100644
--- a/docs/compound_index.html
+++ b/docs/compound_index.html
@@ -33,15 +33,7 @@
@@ -56,23 +48,7 @@
-
-
-
-
-
-
-
-
-
-
- Modulestats.js
+ Module
diff --git a/docs/search_index.js b/docs/search_index.js
index 0e1e33d..77a4089 100644
--- a/docs/search_index.js
+++ b/docs/search_index.js
@@ -1,3 +1,3 @@
(function () {
- window.DENO_DOC_SEARCH_INDEX = {"nodes":[{"kind":"function","name":"isValidIsbn13","nsQualifiers":"","location":{"filename":"books.js","line":8,"col":0},"declarationKind":"export"},{"kind":"function","name":"isValidIsbn10","nsQualifiers":"","location":{"filename":"books.js","line":36,"col":0},"declarationKind":"export"},{"kind":"function","name":"isValidIsbn","nsQualifiers":"","location":{"filename":"books.js","line":65,"col":0},"declarationKind":"export"},{"kind":"class","name":"HockeyGame","nsQualifiers":"","location":{"filename":"hockey.js","line":6,"col":0},"declarationKind":"export"},{"kind":"variable","name":"INFINITY","nsQualifiers":"","location":{"filename":"stats.js","line":5,"col":13},"declarationKind":"export"},{"kind":"function","name":"average","nsQualifiers":"","location":{"filename":"stats.js","line":13,"col":0},"declarationKind":"export"},{"kind":"function","name":"std","nsQualifiers":"","location":{"filename":"stats.js","line":33,"col":0},"declarationKind":"export"}]};
+ window.DENO_DOC_SEARCH_INDEX = {"nodes":[{"kind":"class","name":"HockeyGame","nsQualifiers":"","location":{"filename":"/home/didier/ahuntsic/src-420-301-ah/modules-examples/hockey.js","line":6,"col":0},"declarationKind":"export"},{"kind":"function","name":"isValidIsbn13","nsQualifiers":"","location":{"filename":"/home/didier/ahuntsic/src-420-301-ah/modules-examples/books.js","line":8,"col":0},"declarationKind":"export"},{"kind":"function","name":"isValidIsbn10","nsQualifiers":"","location":{"filename":"/home/didier/ahuntsic/src-420-301-ah/modules-examples/books.js","line":36,"col":0},"declarationKind":"export"},{"kind":"function","name":"isValidIsbn","nsQualifiers":"","location":{"filename":"/home/didier/ahuntsic/src-420-301-ah/modules-examples/books.js","line":65,"col":0},"declarationKind":"export"},{"kind":"variable","name":"INFINITY","nsQualifiers":"","location":{"filename":"/home/didier/ahuntsic/src-420-301-ah/modules-examples/stats.js","line":5,"col":13},"declarationKind":"export"},{"kind":"function","name":"average","nsQualifiers":"","location":{"filename":"/home/didier/ahuntsic/src-420-301-ah/modules-examples/stats.js","line":13,"col":0},"declarationKind":"export"},{"kind":"function","name":"std","nsQualifiers":"","location":{"filename":"/home/didier/ahuntsic/src-420-301-ah/modules-examples/stats.js","line":33,"col":0},"declarationKind":"export"}]};
})()
\ No newline at end of file
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000..6d2231a
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,61 @@
+{
+ "nodes": {
+ "flake-utils": {
+ "inputs": {
+ "systems": "systems"
+ },
+ "locked": {
+ "lastModified": 1701680307,
+ "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1701436327,
+ "narHash": "sha256-tRHbnoNI8SIM5O5xuxOmtSLnswEByzmnQcGGyNRjxsE=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "91050ea1e57e50388fa87a3302ba12d188ef723a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "flake-utils": "flake-utils",
+ "nixpkgs": "nixpkgs"
+ }
+ },
+ "systems": {
+ "locked": {
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default",
+ "type": "github"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..b00860d
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,38 @@
+{
+ description = "The 420-320-AH course";
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+ flake-utils.url = "github:numtide/flake-utils";
+ };
+
+ outputs = { self, nixpkgs, flake-utils }:
+ flake-utils.lib.eachDefaultSystem (system:
+ let
+ pkgs = nixpkgs.legacyPackages.${system};
+ git-hash = if (self ? rev) then builtins.substring 0 8 self.rev else "dirty";
+ last-updated = if (self ? lastModified) then builtins.toString self.lastModified else "0";
+
+
+ python = pkgs.python3.withPackages(ps: with ps; [numpy
+ pandas
+ requests
+ ipdb
+ matplotlib
+ duckdb
+ pyarrow
+ jupyter
+ pytest
+ faker]);
+ in
+ {
+ packages = {};
+ devShells.default = pkgs.mkShell {
+ buildInputs = with pkgs; [deno
+ python];
+ shellHook = ''
+ alias build-docs=${pkgs.deno}/bin/deno doc --html --name="Programmation Client II" --output=./docs/ ./modules-examples/mod.js
+ '';
+ };
+ }
+ );
+}
diff --git a/modules-examples/mod.js b/modules-examples/mod.js
new file mode 100644
index 0000000..a3562de
--- /dev/null
+++ b/modules-examples/mod.js
@@ -0,0 +1,3 @@
+export * from "./hockey.js"
+export * from "./books.js"
+export * from "./stats.js"
\ No newline at end of file