Skip to content

internetarchive/emularity-engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
Sorry, we had to truncate this directory to 1,000 files. 6490 entries were omitted from the list.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IA S/W Emulation

How does this all work

The files are grouped and split up into 3 GitHub repositories (linked below) and corresponding deploys.

GitHub Actions

Internet Archive is using docker OCI containers to serve the repo files as static files, with a lightly customized nginx httpd server. Each deployed container is running on a nomad cluster.

Each git push to this repo will cause a GitHub Actions CI/CD pipeline to run. Presently, it does a [build] and [deploy] pair of jobs. (See CI/CD GitHub Action for more info.)

loader.js

The main ringleader from an archive.org/details/ page for a s/w emulation "item" will load loader.js.

browserFS

There is a parallel browserfs.min.js file that gets loaded alongside loader.js. It is used for node backend-like FileSystem operations like reading and writing files, in the context of the browser. Tracey thinks this came from here:

  • https://www.npmjs.com/package/browserfs and notes the browserfs.min.js* file pair have a fix from db48x after the v1.4.3. Likely worth looking into the near future if/as needed. browserFS can use "ES Modules" for JS import/loading via something like:
import BrowserFS from 'https://esm.sh/browserfs'

nginx

Each repo has the same layout, with all files starting at the top dir:

the nginx has a few critical changes for the handling of .gz files -- since nginx can also "gzip on the fly" text files as well. Thus, the browser needs to know if the file is being dynamically turned to a .gz file by nginx -- or if the file is being served as an already compressed .gz as a static file.

example items

current deployments - production, uses the production branch:

current deployments - testing, this one is for the main branch:

there are 3 related git repos & deployments:

prior archive.org source items with setup files:

Releases

No releases published

Packages