Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions .scripts/copy-openapi.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import fs from 'node:fs/promises';
import path from 'node:path';

const [fromArg, toArg] = process.argv.slice(2);

if (!fromArg || !toArg) {
console.error('Usage: node .scripts/copy-openapi.mjs <fromDir> <toDir>');
process.exit(1);
}

const fromDir = path.resolve(process.cwd(), fromArg);
const toDir = path.resolve(process.cwd(), toArg);

const ensureDir = async (dirPath) => {
await fs.mkdir(dirPath, { recursive: true });
};

const copyOpenapi = async (currentFrom) => {
let entries;
try {
entries = await fs.readdir(currentFrom, { withFileTypes: true });
} catch {
// Source dir might not exist yet; keep behavior lenient like rsync.
return;
}

await Promise.all(
entries.map(async (entry) => {
const entryFrom = path.join(currentFrom, entry.name);
const relative = path.relative(fromDir, entryFrom);
const entryTo = path.join(toDir, relative);

if (entry.isDirectory()) {
await copyOpenapi(entryFrom);
return;
}

if (!entry.isFile() || !entry.name.endsWith('.openapi.json')) {
return;
}

await ensureDir(path.dirname(entryTo));
await fs.copyFile(entryFrom, entryTo);
})
);
};

await ensureDir(toDir);
await copyOpenapi(fromDir);

17 changes: 17 additions & 0 deletions .scripts/rm.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import fs from 'node:fs/promises';
import path from 'node:path';

const targets = process.argv.slice(2);

if (targets.length === 0) {
console.error('Usage: node .scripts/rm.mjs <path> [path...]');
process.exit(1);
}

await Promise.all(
targets.map(async (target) => {
const resolved = path.resolve(process.cwd(), target);
await fs.rm(resolved, { recursive: true, force: true });
})
);

26 changes: 26 additions & 0 deletions .scripts/start-dev.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { spawn } from 'node:child_process';

const pnpmArgs = [
'-r',
'--parallel',
'--filter',
'!@logto/integration-tests',
'--filter',
'!./packages/connectors/connector-*',
'dev',
];

const isWindows = process.platform === 'win32';

// On Windows, pnpm is typically a .cmd shim which can't be spawned directly via CreateProcess;
// run it through cmd.exe instead.
const command = isWindows ? (process.env.ComSpec ?? 'cmd.exe') : 'pnpm';
const args = isWindows ? ['/d', '/s', '/c', 'pnpm', ...pnpmArgs] : pnpmArgs;

const child = spawn(command, args, { stdio: 'inherit' });
child.on('exit', (code, signal) => {
if (typeof code === 'number') {
process.exit(code);
}
process.exit(signal ? 1 : 0);
});
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"prepack": "pnpm -r prepack",
"dev": "pnpm -r prepack && pnpm start:dev",
"dev:cloud": "IS_CLOUD=1 CONSOLE_PUBLIC_URL=/ pnpm dev",
"start:dev": "pnpm -r --parallel --filter=!@logto/integration-tests --filter \"!./packages/connectors/connector-*\" dev",
"start:dev": "node .scripts/start-dev.mjs",
"start": "cd packages/core && NODE_ENV=production node .",
"cli": "logto",
"translate": "logto-translate",
Expand Down Expand Up @@ -67,5 +67,6 @@
"dependencies": {
"@logto/cli": "workspace:^",
"@logto/translate": "workspace:^"
}
},
"packageManager": "[email protected]+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977"
}
2 changes: 1 addition & 1 deletion packages/app-insights/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
},
"scripts": {
"precommit": "lint-staged",
"build": "rm -rf lib/ && tsc -p tsconfig.build.json",
"build": "node ../../.scripts/rm.mjs lib && tsc -p tsconfig.build.json",
"build:test": "pnpm build",
"dev": "tsc -p tsconfig.build.json --watch --preserveWatchOutput --incremental",
"lint": "eslint --ext .ts src",
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
"scripts": {
"precommit": "lint-staged",
"prepare:package-json": "node -p \"'export const packageJson = ' + JSON.stringify(require('./package.json'), undefined, 2) + ';'\" > src/package-json.ts",
"build": "rm -rf lib && pnpm prepare:package-json && tsc -p tsconfig.build.json",
"build": "node ../../.scripts/rm.mjs lib && pnpm prepare:package-json && tsc -p tsconfig.build.json",
"build:test": "pnpm build",
"dev": "tsc -p tsconfig.build.json --watch --preserveWatchOutput --incremental",
"start": "node .",
Expand Down
2 changes: 1 addition & 1 deletion packages/console/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
],
"scripts": {
"prepack": "pnpm generate",
"generate": "./generate.sh",
"generate": "node scripts/generate.mjs",
"precommit": "lint-staged",
"start": "vite",
"dev": "vite",
Expand Down
17 changes: 17 additions & 0 deletions packages/console/scripts/generate.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { spawnSync } from 'node:child_process';
import fs from 'node:fs/promises';
import path from 'node:path';

const run = (command, args) => {
const result = spawnSync(command, args, { stdio: 'inherit', shell: true });
if (result.status !== 0) {
process.exit(result.status ?? 1);
}
};

await fs.rm(path.resolve('scripts-js'), { recursive: true, force: true });
run('pnpm', ['exec', 'tsc', '-p', 'tsconfig.scripts.gen.json']);
await fs.rm(path.resolve('src/consts/jwt-customizer-type-definition.ts'), { force: true });
run('node', ['scripts-js/generate-jwt-customizer-type-definition.js']);
await fs.rm(path.resolve('scripts-js'), { recursive: true, force: true });

4 changes: 2 additions & 2 deletions packages/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
},
"scripts": {
"precommit": "lint-staged",
"copy:apidocs": "rsync -a -m --include '*/' --include '*.openapi.json' --exclude '*' src/routes/ build/routes/",
"copy:apidocs": "node ../../.scripts/copy-openapi.mjs src/routes build/routes",
"check": "tsc --noEmit",
"build": "tsup",
"build:test": "rm -rf build/ && tsc -p tsconfig.test.json --sourcemap && pnpm run copy:apidocs",
"build:test": "node ../../.scripts/rm.mjs build && tsc -p tsconfig.test.json --sourcemap && pnpm run copy:apidocs",
"lint": "eslint --ext .ts --ext .json src",
"lint:report": "pnpm lint --format json --output-file report.json",
"dev": "tsup --config tsup.dev.config.ts",
Expand Down
6 changes: 5 additions & 1 deletion packages/core/src/middleware/koa-spa-proxy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,11 @@ export default function koaSpaProxy<StateT, ContextT extends IRouterParamContext
getConsoleLogFromContext(ctx).plain(`\tproxy --> ${target}`);
},
rewrite: (requestPath) => {
return '/' + path.join(prefix, requestPath);
// `rewrite` is for URLs, so we must use POSIX separators and avoid Windows absolute-path
// semantics (e.g. `path.join('console', '/@fs/...')` would drop the prefix on win32).
const normalized = requestPath.replace(/^\/+/, '');
const joined = prefix ? path.posix.join(prefix, normalized) : normalized;
return '/' + joined;
},
});

Expand Down
2 changes: 1 addition & 1 deletion packages/phrases-experience/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
},
"scripts": {
"precommit": "lint-staged",
"build": "rm -rf lib/ && tsc",
"build": "node ../../.scripts/rm.mjs lib && tsc",
"build:test": "pnpm build",
"dev": "tsc --watch --preserveWatchOutput --incremental",
"lint": "eslint --ext .ts src",
Expand Down
2 changes: 1 addition & 1 deletion packages/phrases/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
},
"scripts": {
"precommit": "lint-staged",
"build": "rm -rf lib/ && tsc",
"build": "node ../../.scripts/rm.mjs lib && tsc",
"build:test": "pnpm build",
"dev": "tsc --watch --preserveWatchOutput --incremental",
"lint": "eslint --ext .ts src",
Expand Down
6 changes: 3 additions & 3 deletions packages/schemas/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@
"scripts": {
"precommit": "lint-staged",
"version": "./update-next.sh && git add alterations/",
"generate": "./generate.sh",
"build:alterations": "rm -rf alterations-js && tsc -p tsconfig.build.alterations.json",
"build": "pnpm generate && rm -rf lib/ && tsc -p tsconfig.build.json && pnpm build:alterations",
"generate": "node scripts/generate.mjs",
"build:alterations": "node ../../.scripts/rm.mjs alterations-js && tsc -p tsconfig.build.alterations.json",
"build": "pnpm generate && node ../../.scripts/rm.mjs lib && tsc -p tsconfig.build.json && pnpm build:alterations",
"build:test": "pnpm build",
"dev": "tsc -p tsconfig.build.json --watch --preserveWatchOutput --incremental",
"lint": "eslint --ext .ts src",
Expand Down
16 changes: 16 additions & 0 deletions packages/schemas/scripts/generate.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { spawnSync } from 'node:child_process';
import fs from 'node:fs/promises';
import path from 'node:path';

const run = (command, args) => {
const result = spawnSync(command, args, { stdio: 'inherit', shell: true });
if (result.status !== 0) {
process.exit(result.status ?? 1);
}
};

await fs.rm(path.resolve('lib'), { recursive: true, force: true });
run('pnpm', ['exec', 'tsc', '-p', 'tsconfig.build.gen.json']);
await fs.rm(path.resolve('src/db-entries'), { recursive: true, force: true });
run('node', ['lib/index.js']);

2 changes: 1 addition & 1 deletion packages/shared/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
},
"scripts": {
"precommit": "lint-staged",
"build": "rm -rf lib/ && tsc -p tsconfig.build.json",
"build": "node ../../.scripts/rm.mjs lib && tsc -p tsconfig.build.json",
"build:test": "pnpm build",
"dev": "tsc -p tsconfig.build.json --watch --preserveWatchOutput --incremental",
"lint": "eslint --ext .ts src",
Expand Down
2 changes: 1 addition & 1 deletion packages/toolkit/connector-kit/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"scripts": {
"precommit": "lint-staged",
"dev": "tsc --watch --preserveWatchOutput --incremental",
"build": "rm -rf lib/ && tsc",
"build": "node ../../../.scripts/rm.mjs lib && tsc",
"build:test": "pnpm build",
"lint": "eslint --ext .ts src",
"lint:report": "pnpm lint --format json --output-file report.json",
Expand Down
2 changes: 1 addition & 1 deletion packages/toolkit/core-kit/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
"scripts": {
"precommit": "lint-staged",
"dev": "tsc -p tsconfig.build.json --watch --preserveWatchOutput --incremental",
"build": "rm -rf lib/ && tsc -p tsconfig.build.json",
"build": "node ../../../.scripts/rm.mjs lib && tsc -p tsconfig.build.json",
"build:test": "pnpm build",
"lint": "eslint --ext .ts src",
"lint:report": "pnpm lint --format json --output-file report.json",
Expand Down
2 changes: 1 addition & 1 deletion packages/toolkit/language-kit/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
],
"scripts": {
"precommit": "lint-staged",
"build": "rm -rf lib/ && tsc -p tsconfig.build.json",
"build": "node ../../../.scripts/rm.mjs lib && tsc -p tsconfig.build.json",
"build:test": "pnpm build",
"lint": "eslint --ext .ts src",
"lint:report": "pnpm lint --format json --output-file report.json",
Expand Down
2 changes: 1 addition & 1 deletion packages/translate/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
"scripts": {
"precommit": "lint-staged",
"prepare:package-json": "node -p \"'export const packageJson = ' + JSON.stringify(require('./package.json'), undefined, 2) + ';'\" > src/package-json.ts",
"build": "rm -rf lib && pnpm prepare:package-json && tsc -p tsconfig.build.json",
"build": "node ../../.scripts/rm.mjs lib && pnpm prepare:package-json && tsc -p tsconfig.build.json",
"dev": "tsc -p tsconfig.build.json --watch --preserveWatchOutput --incremental",
"start": "node .",
"start:dev": "pnpm build && node .",
Expand Down
2 changes: 1 addition & 1 deletion packages/tunnel/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
"scripts": {
"precommit": "lint-staged",
"prepare:package-json": "node -p \"'export const packageJson = ' + JSON.stringify(require('./package.json'), undefined, 2) + ';'\" > src/package-json.ts",
"build": "rm -rf lib && pnpm prepare:package-json && tsc -p tsconfig.build.json",
"build": "node ../../.scripts/rm.mjs lib && pnpm prepare:package-json && tsc -p tsconfig.build.json",
"dev": "tsc -p tsconfig.build.json --watch --preserveWatchOutput --incremental",
"start": "node .",
"start:dev": "pnpm build && node .",
Expand Down
Loading