Back to Napplet Machines V8
SOURCE / PINNED RELEASE

Made of little things.

Napplet Machines V8

Release
b3f614e739f0…
Author-recorded commit
534f19acb4ba…
License
LICENSE
Author’s source reference
nostr://npub182jczunncwe0jn6frpqwq3e0qjws7yqqnc3auccqv9nte2dnd63scjm4rf/wss%3A%2F%2Fgit.napplet.soy%2F/n-b5572362d4a

Archive hash verified: 0f7feb97e2c3d336…. The source-to-build association is the author’s claim; it has not been independently rebuilt.

tests/load.mjs
import { readFileSync } from 'node:fs';
import { resolve, dirname } from 'node:path';
import { runInNewContext } from 'node:vm';
import ts from 'typescript';
const cache = new Map();
export function load(file) {
  file = resolve(file);
  if (cache.has(file)) return cache.get(file);
  const module = { exports: {} };
  cache.set(file, module.exports);
  const source = ts.transpileModule(readFileSync(file, 'utf8'), {
    compilerOptions: {
      module: ts.ModuleKind.CommonJS,
      target: ts.ScriptTarget.ES2022,
    },
  }).outputText;
  runInNewContext(source, {
    exports: module.exports,
    module,
    structuredClone,
    console,
    Math,
    Number,
    Array,
    Object,
    Map,
    Set,
    JSON,
    require: (name) =>
      name === '@napplet/sdk'
        ? {}
        : name.endsWith('.json')
          ? JSON.parse(readFileSync(resolve(dirname(file), name), 'utf8'))
          : load(resolve(dirname(file), name.replace(/\.js$/, '.ts'))),
  });
  return module.exports;
}