Files
webawesome/scripts/utils.js
Konnor Rogers 14914abf65 Initial SSR implementation (#157)
* continued ssr work

* continued ssr work

* prettier

* all components now rendering

* everything finally works

* fix type issues

* working on breadcrumb

* working on breadcrumb

* radio group

* convert all tests to ssr

* prettier

* test suite finally passing

* add layout stuff

* add changelog

* fix TS issue

* fix tests

* fixing deploy stuff

* get QR code displaying

* fix tests

* fix tests

* prettier

* condense hydration stuff

* prettier

* comment out range test

* fixing issues

* use base fixtures

* fixing examples

* dont vendor

* fix import of hydration support

* adding notes

* add notesg

* add ssr loader

* fix build

* prettier

* add notes

* add notes

* prettier

* fixing bundled stuff

* remove cdn

* remove cdn

* prettier

* fiixng tests

* prettier

* split jobs??

* prettier

* fix build stuff

* add reset mouse and await aTimeout

* prettier

* fix improper tests

* prettier

* bail on first

* fix linting

* only test form with client

* redundancy on ssr-loader??

* maybe this will work

* prettier

* try callout now

* fix form.test.ts

* fix form.test.ts

* prettier

* fix forms

* fix forms

* try again

* prettier

* add some awaits

* prettier

* comment out broken SSR tests

* prettier

* comment out broken SSR tests

* prettier

* dont skip in CI

* upgrade playwright to beta

* prettier

* try some trickery

* try some trickery

* await updateComplete

* try to fix form.test.ts

* import hydrateable elements 1 time

* prettier

* fix input defaultValue issues

* fix form controls to behave like their native counterpartS

* add changelog entry

* prettier

* fix unexpected behavior with range / button
2024-09-11 10:25:42 -04:00

59 lines
1.5 KiB
JavaScript

import { dirname, join } from 'path';
import { fileURLToPath } from 'url';
import childProcess from 'child_process';
const __dirname = dirname(fileURLToPath(import.meta.url));
// Helpful directories
export const rootDir = dirname(__dirname);
export const distDir = join(rootDir, 'dist');
export const cdnDir = join(rootDir, 'dist-cdn');
export const docsDir = join(rootDir, 'docs');
export const siteDir = join(rootDir, '_site');
/**
* Runs a script and returns a promise that resolves with the content of stdout when the script exits or rejects with
* the content of stderr when the script exits with an error.
*/
export function runScript(scriptPath, args = []) {
return new Promise((resolve, reject) => {
const child = childProcess.fork(scriptPath, args, { silent: true });
let wasInvoked = false;
let stderr = '';
let stdout = '';
child.on('error', err => {
if (wasInvoked) {
return;
}
wasInvoked = true;
reject(err);
});
// Capture output
child.stderr.on('data', data => (stderr += data));
child.stdout.on('data', data => (stdout += data));
// execute the callback once the process has finished running
child.on('exit', code => {
if (wasInvoked) {
return;
}
wasInvoked = true;
if (code === 0) {
// The process exited normally
resolve(stdout.trim());
} else {
// An error code was received
reject(new Error(stderr));
}
child.unref();
});
});
}