mirror of
https://github.com/morten-olsen/mini-loader.git
synced 2026-02-08 01:36:26 +01:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5e7461c10b |
60
.github/workflows/release.yml
vendored
60
.github/workflows/release.yml
vendored
@@ -91,33 +91,33 @@ jobs:
|
|||||||
tags: ${{ steps.meta.outputs.tags }}
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
labels: ${{ steps.meta.outputs.labels }}
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
|
||||||
release-npm:
|
# release-npm:
|
||||||
if: github.ref == 'refs/heads/main'
|
# if: github.ref == 'refs/heads/main'
|
||||||
runs-on: ubuntu-latest
|
# runs-on: ubuntu-latest
|
||||||
needs: [build, update-release-draft]
|
# needs: [build, update-release-draft]
|
||||||
permissions:
|
# permissions:
|
||||||
contents: read
|
# contents: read
|
||||||
packages: write
|
# packages: write
|
||||||
steps:
|
# steps:
|
||||||
- uses: actions/checkout@v3
|
# - uses: actions/checkout@v3
|
||||||
with:
|
# with:
|
||||||
fetch-depth: 0
|
# fetch-depth: 0
|
||||||
- run: corepack enable
|
# - run: corepack enable
|
||||||
- uses: actions/setup-node@v3
|
# - uses: actions/setup-node@v3
|
||||||
with:
|
# with:
|
||||||
cache: '${{ env.NODE_CACHE }}'
|
# cache: '${{ env.NODE_CACHE }}'
|
||||||
node-version: '${{ env.NODE_VERSION }}'
|
# node-version: '${{ env.NODE_VERSION }}'
|
||||||
scope: '${{ env.NODE_SCOPE }}'
|
# scope: '${{ env.NODE_SCOPE }}'
|
||||||
- uses: actions/download-artifact@v3
|
# - uses: actions/download-artifact@v3
|
||||||
with:
|
# with:
|
||||||
name: lib
|
# name: lib
|
||||||
path: ./
|
# path: ./
|
||||||
- run: |
|
# - run: |
|
||||||
pnpm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN}
|
# pnpm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN}
|
||||||
pnpm install
|
# pnpm install
|
||||||
git config user.name "Github Actions Bot"
|
# git config user.name "Github Actions Bot"
|
||||||
git config user.email "<>"
|
# git config user.email "<>"
|
||||||
node scripts/set-version.mjs $(git describe --tag --abbrev=0)
|
# node scripts/set-version.ts $(git describe --tag --abbrev=0)
|
||||||
pnpm publish -r --publish-branch main --access public --no-git-checks
|
# pnpm publish -r --publish-branch main --access public --no-git-checks
|
||||||
env:
|
# env:
|
||||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
# NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
|||||||
@@ -15,19 +15,14 @@ npm install -g @morten-olsen/mini-loader-cli
|
|||||||
Now, let's write a basic script that outputs a single artifact named “hello”. Create a new file with the following JavaScript code:
|
Now, let's write a basic script that outputs a single artifact named “hello”. Create a new file with the following JavaScript code:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
import { artifacts } from '@morten-olsen/mini-loader';
|
import { artifacts } from "@morten-olsen/mini-loader";
|
||||||
|
|
||||||
const run = async () => {
|
|
||||||
artifacts.create('hello', 'world');
|
artifacts.create('hello', 'world');
|
||||||
};
|
|
||||||
|
|
||||||
run();
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Save this file as `script.js`.
|
Save this file as `script.mjs`.
|
||||||
|
|
||||||
#### A Note on Dependencies
|
#### A Note on Dependencies
|
||||||
|
|
||||||
In this script, we're using the `@morten-olsen/mini-loader` package, which might not be installed in your local environment. No worries though, as mini loader can automatically download necessary packages when preparing the script. Alternatively, for a more structured approach (especially if you're using TypeScript), you can initialize a Node.js project and install the dependencies for complete access to typings.
|
In this script, we're using the `@morten-olsen/mini-loader` package, which might not be installed in your local environment. No worries though, as mini loader can automatically download necessary packages when preparing the script. Alternatively, for a more structured approach (especially if you're using TypeScript), you can initialize a Node.js project and install the dependencies for complete access to typings.
|
||||||
|
|
||||||
### Step 3: Run the Script Locally
|
### Step 3: Run the Script Locally
|
||||||
@@ -35,7 +30,7 @@ In this script, we're using the `@morten-olsen/mini-loader` package, which might
|
|||||||
To validate that your script is functioning correctly, execute it locally using the following command:
|
To validate that your script is functioning correctly, execute it locally using the following command:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
mini-loader local run script.js -ai
|
mini-loader local run script.mjs -ai
|
||||||
```
|
```
|
||||||
|
|
||||||
The `-ai` flag instructs the CLI to automatically download any referenced packages when bundling the script.
|
The `-ai` flag instructs the CLI to automatically download any referenced packages when bundling the script.
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@morten-olsen/mini-loader-repo",
|
"name": "@morten-olsen/mini-loader-repo",
|
||||||
"private": "true",
|
"private": "true",
|
||||||
"license": "GPL-3.0",
|
|
||||||
"packageManager": "pnpm@8.10.4",
|
"packageManager": "pnpm@8.10.4",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -12,6 +11,7 @@
|
|||||||
},
|
},
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "",
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@react-native-community/eslint-config": "^3.2.0",
|
"@react-native-community/eslint-config": "^3.2.0",
|
||||||
"eslint": "^8.53.0",
|
"eslint": "^8.53.0",
|
||||||
@@ -23,10 +23,5 @@
|
|||||||
"@pnpm/find-workspace-packages": "^6.0.9",
|
"@pnpm/find-workspace-packages": "^6.0.9",
|
||||||
"@types/node": "^20.10.8",
|
"@types/node": "^20.10.8",
|
||||||
"ts-node": "^10.9.2"
|
"ts-node": "^10.9.2"
|
||||||
},
|
|
||||||
"homepage": "https://github.com/morten-olsen/mini-loader",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/morten-olsen/mini-loader"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1 +0,0 @@
|
|||||||
[Go to documentation](https://github.com/morten-olsen/mini-loader)
|
|
||||||
@@ -3,7 +3,6 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"main": "./dist/esm/index.js",
|
"main": "./dist/esm/index.js",
|
||||||
"types": "./dist/esm/index.d.ts",
|
"types": "./dist/esm/index.d.ts",
|
||||||
"license": "GPL-3.0",
|
|
||||||
"bin": {
|
"bin": {
|
||||||
"mini-loader": "./bin/index.mjs"
|
"mini-loader": "./bin/index.mjs"
|
||||||
},
|
},
|
||||||
@@ -42,10 +41,5 @@
|
|||||||
"@morten-olsen/mini-loader-server": "workspace:^",
|
"@morten-olsen/mini-loader-server": "workspace:^",
|
||||||
"@types/inquirer": "^9.0.7",
|
"@types/inquirer": "^9.0.7",
|
||||||
"typescript": "^5.3.3"
|
"typescript": "^5.3.3"
|
||||||
},
|
|
||||||
"homepage": "https://github.com/morten-olsen/mini-loader",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/morten-olsen/mini-loader"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -37,7 +37,7 @@ list
|
|||||||
order,
|
order,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
console.table(logs);
|
console.table(logs.reverse());
|
||||||
});
|
});
|
||||||
|
|
||||||
export { list };
|
export { list };
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@morten-olsen/mini-loader-configs",
|
"name": "@morten-olsen/mini-loader-configs",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"private": true,
|
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -9,10 +8,5 @@
|
|||||||
},
|
},
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "GPL-3.0",
|
"license": "ISC"
|
||||||
"homepage": "https://github.com/morten-olsen/mini-loader",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/morten-olsen/mini-loader"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@morten-olsen/mini-loader-examples",
|
"name": "@morten-olsen/mini-loader-examples",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "GPL-3.0",
|
|
||||||
"private": true,
|
|
||||||
"main": "./dist/esm/index.js",
|
"main": "./dist/esm/index.js",
|
||||||
"types": "./dist/esm/index.d.ts",
|
"types": "./dist/esm/index.d.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -23,10 +21,5 @@
|
|||||||
"@morten-olsen/mini-loader": "workspace:^",
|
"@morten-olsen/mini-loader": "workspace:^",
|
||||||
"@types/node": "^20.10.8",
|
"@types/node": "^20.10.8",
|
||||||
"typescript": "^5.3.3"
|
"typescript": "^5.3.3"
|
||||||
},
|
|
||||||
"homepage": "https://github.com/morten-olsen/mini-loader",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/morten-olsen/mini-loader"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,5 @@
|
|||||||
import { artifacts, logger } from '@morten-olsen/mini-loader';
|
import { artifacts, logger } from '@morten-olsen/mini-loader';
|
||||||
|
|
||||||
const run = async () => {
|
|
||||||
await logger.info('Hello world');
|
await logger.info('Hello world');
|
||||||
await artifacts.create('foo', 'bar');
|
|
||||||
};
|
|
||||||
|
|
||||||
run();
|
await artifacts.create('foo', 'bar');
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
[Go to documentation](https://github.com/morten-olsen/mini-loader)
|
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@morten-olsen/mini-loader",
|
"name": "@morten-olsen/mini-loader",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "GPL-3.0",
|
|
||||||
"main": "./dist/esm/index.js",
|
"main": "./dist/esm/index.js",
|
||||||
"types": "./dist/esm/index.d.ts",
|
"types": "./dist/esm/index.d.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -20,10 +19,5 @@
|
|||||||
"@morten-olsen/mini-loader-configs": "workspace:^",
|
"@morten-olsen/mini-loader-configs": "workspace:^",
|
||||||
"@types/node": "^20.10.8",
|
"@types/node": "^20.10.8",
|
||||||
"typescript": "^5.3.3"
|
"typescript": "^5.3.3"
|
||||||
},
|
|
||||||
"homepage": "https://github.com/morten-olsen/mini-loader",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/morten-olsen/mini-loader"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -12,9 +12,11 @@ const connect = () =>
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const connectionRequest = connect();
|
||||||
|
|
||||||
const send = async (data: any) =>
|
const send = async (data: any) =>
|
||||||
new Promise<void>(async (resolve, reject) => {
|
new Promise<void>(async (resolve, reject) => {
|
||||||
const connection = await connect();
|
const connection = await connectionRequest;
|
||||||
const cleaned = JSON.parse(JSON.stringify(data));
|
const cleaned = JSON.parse(JSON.stringify(data));
|
||||||
connection.write(JSON.stringify(cleaned), 'utf-8', (err) => {
|
connection.write(JSON.stringify(cleaned), 'utf-8', (err) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
[Go to documentation](https://github.com/morten-olsen/mini-loader)
|
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@morten-olsen/mini-loader-runner",
|
"name": "@morten-olsen/mini-loader-runner",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "GPL-3.0",
|
|
||||||
"main": "./dist/esm/index.js",
|
"main": "./dist/esm/index.js",
|
||||||
"types": "./dist/esm/index.d.ts",
|
"types": "./dist/esm/index.d.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -25,10 +24,5 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"eventemitter3": "^5.0.1",
|
"eventemitter3": "^5.0.1",
|
||||||
"nanoid": "^5.0.4"
|
"nanoid": "^5.0.4"
|
||||||
},
|
|
||||||
"homepage": "https://github.com/morten-olsen/mini-loader",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/morten-olsen/mini-loader"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,7 @@ import { Event } from '@morten-olsen/mini-loader';
|
|||||||
import { join } from 'path';
|
import { join } from 'path';
|
||||||
import { createServer } from 'http';
|
import { createServer } from 'http';
|
||||||
import { nanoid } from 'nanoid';
|
import { nanoid } from 'nanoid';
|
||||||
import { chmod, mkdir, rm, writeFile } from 'fs/promises';
|
import { chmod, mkdir, unlink, writeFile } from 'fs/promises';
|
||||||
|
|
||||||
type RunEvents = {
|
type RunEvents = {
|
||||||
message: (event: Event) => void;
|
message: (event: Event) => void;
|
||||||
@@ -39,13 +39,9 @@ const run = async ({ script, input, secrets }: RunOptions) => {
|
|||||||
emitter.emit('message', message);
|
emitter.emit('message', message);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
server.listen(hostSocket);
|
|
||||||
|
|
||||||
const worker = new Worker(script, {
|
const worker = new Worker(script, {
|
||||||
eval: true,
|
eval: true,
|
||||||
stdin: false,
|
|
||||||
stdout: false,
|
|
||||||
stderr: false,
|
|
||||||
env: {
|
env: {
|
||||||
HOST_SOCKET: hostSocket,
|
HOST_SOCKET: hostSocket,
|
||||||
SECRETS: JSON.stringify(secrets),
|
SECRETS: JSON.stringify(secrets),
|
||||||
@@ -56,34 +52,18 @@ const run = async ({ script, input, secrets }: RunOptions) => {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
worker.stdout?.on('data', (data) => {
|
|
||||||
emitter.emit('message', {
|
|
||||||
type: 'log',
|
|
||||||
payload: {
|
|
||||||
severity: 'info',
|
|
||||||
message: data.toString(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
worker.stderr?.on('data', (data) => {
|
|
||||||
emitter.emit('message', {
|
|
||||||
type: 'log',
|
|
||||||
payload: {
|
|
||||||
severity: 'error',
|
|
||||||
message: data.toString(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
const promise = new Promise<void>((resolve, reject) => {
|
const promise = new Promise<void>((resolve, reject) => {
|
||||||
|
worker.on('message', (message: Event) => {
|
||||||
|
emitter.emit('message', message);
|
||||||
|
});
|
||||||
worker.on('exit', async () => {
|
worker.on('exit', async () => {
|
||||||
server.close();
|
server.close();
|
||||||
await rm(dataDir, { recursive: true, force: true });
|
await unlink(hostSocket);
|
||||||
resolve();
|
resolve();
|
||||||
});
|
});
|
||||||
worker.on('error', async (error) => {
|
worker.on('error', async (error) => {
|
||||||
server.close();
|
server.close();
|
||||||
|
await unlink(hostSocket);
|
||||||
reject(error);
|
reject(error);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
[Go to documentation](https://github.com/morten-olsen/mini-loader)
|
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@morten-olsen/mini-loader-server",
|
"name": "@morten-olsen/mini-loader-server",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "GPL-3.0",
|
|
||||||
"main": "./dist/esm/index.js",
|
"main": "./dist/esm/index.js",
|
||||||
"types": "./dist/esm/index.d.ts",
|
"types": "./dist/esm/index.d.ts",
|
||||||
"bin": {
|
"bin": {
|
||||||
@@ -39,10 +38,5 @@
|
|||||||
"sqlite3": "^5.1.7",
|
"sqlite3": "^5.1.7",
|
||||||
"superjson": "^2.2.1",
|
"superjson": "^2.2.1",
|
||||||
"zod": "^3.22.4"
|
"zod": "^3.22.4"
|
||||||
},
|
|
||||||
"homepage": "https://github.com/morten-olsen/mini-loader",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/morten-olsen/mini-loader"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -27,9 +27,5 @@ program.addCommand(createToken);
|
|||||||
|
|
||||||
await program.parseAsync(process.argv);
|
await program.parseAsync(process.argv);
|
||||||
|
|
||||||
process.on('unhandledRejection', (reason, p) => {
|
|
||||||
console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);
|
|
||||||
});
|
|
||||||
|
|
||||||
export type { Runtime } from './runtime/runtime.js';
|
export type { Runtime } from './runtime/runtime.js';
|
||||||
export type { RootRouter } from './router/router.js';
|
export type { RootRouter } from './router/router.js';
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
import { findWorkspacePackages } from '@pnpm/find-workspace-packages';
|
import { findWorkspacePackages } from '@pnpm/find-workspace-packages';
|
||||||
import { readFile, writeFile } from 'fs/promises';
|
import { writeFile } from 'fs/promises';
|
||||||
import { join } from 'path';
|
import { join } from 'path';
|
||||||
|
|
||||||
const sharedData = JSON.parse(await readFile(join(process.cwd(), 'scripts/shared-data.json')));
|
|
||||||
|
|
||||||
const version = process.argv[2];
|
const version = process.argv[2];
|
||||||
if (!version) {
|
if (!version) {
|
||||||
throw new Error('Version is required');
|
throw new Error('Version is required');
|
||||||
@@ -13,9 +11,6 @@ const packages = await findWorkspacePackages(process.cwd());
|
|||||||
|
|
||||||
for (const { manifest, dir } of packages) {
|
for (const { manifest, dir } of packages) {
|
||||||
console.log(dir, version);
|
console.log(dir, version);
|
||||||
for (let [key, value] of Object.entries(sharedData || {})) {
|
|
||||||
manifest[key] = value;
|
|
||||||
}
|
|
||||||
manifest.version = version;
|
manifest.version = version;
|
||||||
await writeFile(join(dir, 'package.json'), JSON.stringify(manifest, null, 2));
|
await writeFile(join(dir, 'package.json'), JSON.stringify(manifest, null, 2));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"license": "GPL-3.0",
|
|
||||||
"homepage": "https://github.com/morten-olsen/mini-loader",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/morten-olsen/mini-loader"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user