@adviser/cement 0.4.51 → 0.4.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/cli/generate-version-ts-cmd.cjs +79 -0
- package/cjs/cli/generate-version-ts-cmd.cjs.map +1 -0
- package/cjs/cli/generate-version-ts-cmd.d.ts +3 -0
- package/cjs/cli/generate-version-ts-cmd.d.ts.map +1 -0
- package/cjs/cli/main.cjs +8 -3
- package/cjs/cli/main.cjs.map +1 -1
- package/cjs/cli/patch-version-cmd.cjs +3 -226
- package/cjs/cli/patch-version-cmd.cjs.map +1 -1
- package/cjs/cli/patch-version-cmd.d.ts +0 -4
- package/cjs/cli/patch-version-cmd.d.ts.map +1 -1
- package/cjs/cli/prepare-pubdir-cmd.cjs +150 -0
- package/cjs/cli/prepare-pubdir-cmd.cjs.map +1 -0
- package/cjs/cli/prepare-pubdir-cmd.d.ts +4 -0
- package/cjs/cli/prepare-pubdir-cmd.d.ts.map +1 -0
- package/cjs/cli/publish-tags-cmd.cjs +94 -0
- package/cjs/cli/publish-tags-cmd.cjs.map +1 -0
- package/cjs/cli/publish-tags-cmd.d.ts +3 -0
- package/cjs/cli/publish-tags-cmd.d.ts.map +1 -0
- package/cjs/cli/setup-deno-json-cmd.cjs +77 -0
- package/cjs/cli/setup-deno-json-cmd.cjs.map +1 -0
- package/cjs/cli/setup-deno-json-cmd.d.ts +3 -0
- package/cjs/cli/setup-deno-json-cmd.d.ts.map +1 -0
- package/cjs/cli/utils.cjs +93 -0
- package/cjs/cli/utils.cjs.map +1 -0
- package/cjs/cli/utils.d.ts +6 -0
- package/cjs/cli/utils.d.ts.map +1 -0
- package/cjs/future.cjs +3 -1
- package/cjs/future.cjs.map +1 -1
- package/cjs/future.d.ts +3 -2
- package/cjs/future.d.ts.map +1 -1
- package/cjs/future.test.cjs +4 -0
- package/cjs/future.test.cjs.map +1 -1
- package/cjs/index.cjs +1 -0
- package/cjs/index.cjs.map +1 -1
- package/cjs/index.d.ts +1 -0
- package/cjs/index.d.ts.map +1 -1
- package/cjs/poller.cjs +46 -0
- package/cjs/poller.cjs.map +1 -0
- package/cjs/poller.d.ts +19 -0
- package/cjs/poller.d.ts.map +1 -0
- package/cjs/poller.test.cjs +95 -0
- package/cjs/poller.test.cjs.map +1 -0
- package/cjs/poller.test.d.ts +2 -0
- package/cjs/poller.test.d.ts.map +1 -0
- package/cjs/resolve-once.d.ts +4 -4
- package/cjs/resolve-once.d.ts.map +1 -1
- package/cjs/utils/index.cjs +1 -0
- package/cjs/utils/index.cjs.map +1 -1
- package/cjs/utils/index.d.ts +1 -0
- package/cjs/utils/index.d.ts.map +1 -1
- package/cjs/utils/promise-sleep.cjs +33 -0
- package/cjs/utils/promise-sleep.cjs.map +1 -0
- package/cjs/utils/promise-sleep.d.ts +2 -0
- package/cjs/utils/promise-sleep.d.ts.map +1 -0
- package/cjs/version.cjs +1 -1
- package/deno.json +1 -1
- package/esm/cli/generate-version-ts-cmd.d.ts +3 -0
- package/esm/cli/generate-version-ts-cmd.d.ts.map +1 -0
- package/esm/cli/generate-version-ts-cmd.js +43 -0
- package/esm/cli/generate-version-ts-cmd.js.map +1 -0
- package/esm/cli/main.js +6 -1
- package/esm/cli/main.js.map +1 -1
- package/esm/cli/patch-version-cmd.d.ts +0 -4
- package/esm/cli/patch-version-cmd.d.ts.map +1 -1
- package/esm/cli/patch-version-cmd.js +1 -220
- package/esm/cli/patch-version-cmd.js.map +1 -1
- package/esm/cli/prepare-pubdir-cmd.d.ts +4 -0
- package/esm/cli/prepare-pubdir-cmd.d.ts.map +1 -0
- package/esm/cli/prepare-pubdir-cmd.js +113 -0
- package/esm/cli/prepare-pubdir-cmd.js.map +1 -0
- package/esm/cli/publish-tags-cmd.d.ts +3 -0
- package/esm/cli/publish-tags-cmd.d.ts.map +1 -0
- package/esm/cli/publish-tags-cmd.js +58 -0
- package/esm/cli/publish-tags-cmd.js.map +1 -0
- package/esm/cli/setup-deno-json-cmd.d.ts +3 -0
- package/esm/cli/setup-deno-json-cmd.d.ts.map +1 -0
- package/esm/cli/setup-deno-json-cmd.js +41 -0
- package/esm/cli/setup-deno-json-cmd.js.map +1 -0
- package/esm/cli/utils.d.ts +6 -0
- package/esm/cli/utils.d.ts.map +1 -0
- package/esm/cli/utils.js +54 -0
- package/esm/cli/utils.js.map +1 -0
- package/esm/future.d.ts +3 -2
- package/esm/future.d.ts.map +1 -1
- package/esm/future.js +3 -1
- package/esm/future.js.map +1 -1
- package/esm/future.test.js +4 -0
- package/esm/future.test.js.map +1 -1
- package/esm/index.d.ts +1 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -1
- package/esm/poller.d.ts +19 -0
- package/esm/poller.d.ts.map +1 -0
- package/esm/poller.js +43 -0
- package/esm/poller.js.map +1 -0
- package/esm/poller.test.d.ts +2 -0
- package/esm/poller.test.d.ts.map +1 -0
- package/esm/poller.test.js +93 -0
- package/esm/poller.test.js.map +1 -0
- package/esm/resolve-once.d.ts +4 -4
- package/esm/resolve-once.d.ts.map +1 -1
- package/esm/utils/index.d.ts +1 -0
- package/esm/utils/index.d.ts.map +1 -1
- package/esm/utils/index.js +1 -0
- package/esm/utils/index.js.map +1 -1
- package/esm/utils/promise-sleep.d.ts +2 -0
- package/esm/utils/promise-sleep.d.ts.map +1 -0
- package/esm/utils/promise-sleep.js +30 -0
- package/esm/utils/promise-sleep.js.map +1 -0
- package/esm/version.js +1 -1
- package/package.json +43 -26
- package/src/cli/generate-version-ts-cmd.ts +43 -0
- package/src/cli/main.ts +6 -1
- package/src/cli/patch-version-cmd.ts +1 -289
- package/src/cli/prepare-pubdir-cmd.ts +156 -0
- package/src/cli/publish-tags-cmd.ts +67 -0
- package/src/cli/run.sh +10 -1
- package/src/cli/setup-deno-json-cmd.ts +51 -0
- package/src/cli/utils.ts +70 -0
- package/src/future.ts +4 -2
- package/src/index.ts +1 -0
- package/src/poller.ts +68 -0
- package/src/resolve-once.ts +4 -4
- package/src/utils/index.ts +1 -0
- package/src/utils/promise-sleep.ts +42 -0
- package/ts/cjs/cli/generate-version-ts-cmd.d.ts +3 -0
- package/ts/cjs/cli/generate-version-ts-cmd.d.ts.map +1 -0
- package/ts/cjs/cli/generate-version-ts-cmd.js +79 -0
- package/ts/cjs/cli/generate-version-ts-cmd.js.map +1 -0
- package/ts/cjs/cli/main.js +8 -3
- package/ts/cjs/cli/main.js.map +1 -1
- package/ts/cjs/cli/patch-version-cmd.d.ts +0 -4
- package/ts/cjs/cli/patch-version-cmd.d.ts.map +1 -1
- package/ts/cjs/cli/patch-version-cmd.js +3 -226
- package/ts/cjs/cli/patch-version-cmd.js.map +1 -1
- package/ts/cjs/cli/prepare-pubdir-cmd.d.ts +4 -0
- package/ts/cjs/cli/prepare-pubdir-cmd.d.ts.map +1 -0
- package/ts/cjs/cli/prepare-pubdir-cmd.js +150 -0
- package/ts/cjs/cli/prepare-pubdir-cmd.js.map +1 -0
- package/ts/cjs/cli/publish-tags-cmd.d.ts +3 -0
- package/ts/cjs/cli/publish-tags-cmd.d.ts.map +1 -0
- package/ts/cjs/cli/publish-tags-cmd.js +94 -0
- package/ts/cjs/cli/publish-tags-cmd.js.map +1 -0
- package/ts/cjs/cli/setup-deno-json-cmd.d.ts +3 -0
- package/ts/cjs/cli/setup-deno-json-cmd.d.ts.map +1 -0
- package/ts/cjs/cli/setup-deno-json-cmd.js +77 -0
- package/ts/cjs/cli/setup-deno-json-cmd.js.map +1 -0
- package/ts/cjs/cli/utils.d.ts +6 -0
- package/ts/cjs/cli/utils.d.ts.map +1 -0
- package/ts/cjs/cli/utils.js +93 -0
- package/ts/cjs/cli/utils.js.map +1 -0
- package/ts/cjs/future.d.ts +3 -2
- package/ts/cjs/future.d.ts.map +1 -1
- package/ts/cjs/future.js +3 -1
- package/ts/cjs/future.js.map +1 -1
- package/ts/cjs/future.test.js +4 -0
- package/ts/cjs/future.test.js.map +1 -1
- package/ts/cjs/index.d.ts +1 -0
- package/ts/cjs/index.d.ts.map +1 -1
- package/ts/cjs/index.js +1 -0
- package/ts/cjs/index.js.map +1 -1
- package/ts/cjs/poller.d.ts +19 -0
- package/ts/cjs/poller.d.ts.map +1 -0
- package/ts/cjs/poller.js +46 -0
- package/ts/cjs/poller.js.map +1 -0
- package/ts/cjs/poller.test.d.ts +2 -0
- package/ts/cjs/poller.test.d.ts.map +1 -0
- package/ts/cjs/poller.test.js +95 -0
- package/ts/cjs/poller.test.js.map +1 -0
- package/ts/cjs/resolve-once.d.ts +4 -4
- package/ts/cjs/resolve-once.d.ts.map +1 -1
- package/ts/cjs/utils/index.d.ts +1 -0
- package/ts/cjs/utils/index.d.ts.map +1 -1
- package/ts/cjs/utils/index.js +1 -0
- package/ts/cjs/utils/index.js.map +1 -1
- package/ts/cjs/utils/promise-sleep.d.ts +2 -0
- package/ts/cjs/utils/promise-sleep.d.ts.map +1 -0
- package/ts/cjs/utils/promise-sleep.js +33 -0
- package/ts/cjs/utils/promise-sleep.js.map +1 -0
- package/ts/cjs/version.js +1 -1
- package/ts/esm/cli/generate-version-ts-cmd.d.ts +3 -0
- package/ts/esm/cli/generate-version-ts-cmd.d.ts.map +1 -0
- package/ts/esm/cli/generate-version-ts-cmd.js +43 -0
- package/ts/esm/cli/generate-version-ts-cmd.js.map +1 -0
- package/ts/esm/cli/main.js +6 -1
- package/ts/esm/cli/main.js.map +1 -1
- package/ts/esm/cli/patch-version-cmd.d.ts +0 -4
- package/ts/esm/cli/patch-version-cmd.d.ts.map +1 -1
- package/ts/esm/cli/patch-version-cmd.js +1 -220
- package/ts/esm/cli/patch-version-cmd.js.map +1 -1
- package/ts/esm/cli/prepare-pubdir-cmd.d.ts +4 -0
- package/ts/esm/cli/prepare-pubdir-cmd.d.ts.map +1 -0
- package/ts/esm/cli/prepare-pubdir-cmd.js +113 -0
- package/ts/esm/cli/prepare-pubdir-cmd.js.map +1 -0
- package/ts/esm/cli/publish-tags-cmd.d.ts +3 -0
- package/ts/esm/cli/publish-tags-cmd.d.ts.map +1 -0
- package/ts/esm/cli/publish-tags-cmd.js +58 -0
- package/ts/esm/cli/publish-tags-cmd.js.map +1 -0
- package/ts/esm/cli/setup-deno-json-cmd.d.ts +3 -0
- package/ts/esm/cli/setup-deno-json-cmd.d.ts.map +1 -0
- package/ts/esm/cli/setup-deno-json-cmd.js +41 -0
- package/ts/esm/cli/setup-deno-json-cmd.js.map +1 -0
- package/ts/esm/cli/utils.d.ts +6 -0
- package/ts/esm/cli/utils.d.ts.map +1 -0
- package/ts/esm/cli/utils.js +54 -0
- package/ts/esm/cli/utils.js.map +1 -0
- package/ts/esm/future.d.ts +3 -2
- package/ts/esm/future.d.ts.map +1 -1
- package/ts/esm/future.js +3 -1
- package/ts/esm/future.js.map +1 -1
- package/ts/esm/future.test.js +4 -0
- package/ts/esm/future.test.js.map +1 -1
- package/ts/esm/index.d.ts +1 -0
- package/ts/esm/index.d.ts.map +1 -1
- package/ts/esm/index.js +1 -0
- package/ts/esm/index.js.map +1 -1
- package/ts/esm/poller.d.ts +19 -0
- package/ts/esm/poller.d.ts.map +1 -0
- package/ts/esm/poller.js +43 -0
- package/ts/esm/poller.js.map +1 -0
- package/ts/esm/poller.test.d.ts +2 -0
- package/ts/esm/poller.test.d.ts.map +1 -0
- package/ts/esm/poller.test.js +93 -0
- package/ts/esm/poller.test.js.map +1 -0
- package/ts/esm/resolve-once.d.ts +4 -4
- package/ts/esm/resolve-once.d.ts.map +1 -1
- package/ts/esm/utils/index.d.ts +1 -0
- package/ts/esm/utils/index.d.ts.map +1 -1
- package/ts/esm/utils/index.js +1 -0
- package/ts/esm/utils/index.js.map +1 -1
- package/ts/esm/utils/promise-sleep.d.ts +2 -0
- package/ts/esm/utils/promise-sleep.d.ts.map +1 -0
- package/ts/esm/utils/promise-sleep.js +30 -0
- package/ts/esm/utils/promise-sleep.js.map +1 -0
- package/ts/esm/version.js +1 -1
- package/tsconfig.json +25 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { command, option, string } from "cmd-ts";
|
|
2
|
+
import * as process from "node:process";
|
|
3
|
+
import { SemVer } from "semver";
|
|
4
|
+
import { versionFromPackageJson } from "./utils.js";
|
|
5
|
+
|
|
6
|
+
// Regex patterns for version parsing
|
|
7
|
+
const reVersionAlphaStart = /^[a-z](\d+\.\d+\.\d+.*)$/;
|
|
8
|
+
// const reVersionOptionalAlphaStart = /^[a-z]?(\d+\.\d+\.\d+.*)$/;
|
|
9
|
+
const reScopedVersion = /^[^@]+@(.*)$/;
|
|
10
|
+
const reEndVersion = /.*\/([^/]+)$/;
|
|
11
|
+
|
|
12
|
+
function getEnvVersion(version?: string, xenv = process.env): string {
|
|
13
|
+
let wversion = version || xenv.GITHUB_REF || versionFromPackageJson();
|
|
14
|
+
if (reEndVersion.test(wversion)) {
|
|
15
|
+
wversion = wversion.match(reEndVersion)[1];
|
|
16
|
+
}
|
|
17
|
+
const calculatedVersion = wversion.replace(reScopedVersion, "$1").replace(reVersionAlphaStart, "$1");
|
|
18
|
+
try {
|
|
19
|
+
new SemVer(calculatedVersion);
|
|
20
|
+
return calculatedVersion;
|
|
21
|
+
} catch (e) {
|
|
22
|
+
// Fallback to package.json version if parsing fails
|
|
23
|
+
return versionFromPackageJson();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function publishTagsCmd(): ReturnType<typeof command> {
|
|
28
|
+
return command({
|
|
29
|
+
name: "publish-tags",
|
|
30
|
+
description: "Calculate npm publish tags based on version",
|
|
31
|
+
version: "1.0.0",
|
|
32
|
+
args: {
|
|
33
|
+
releaseVersion: option({
|
|
34
|
+
long: "release-version",
|
|
35
|
+
short: "r",
|
|
36
|
+
defaultValue: () => undefined,
|
|
37
|
+
defaultValueIsSerializable: true,
|
|
38
|
+
type: string,
|
|
39
|
+
description: "Version string to analyze, defaults to GITHUB_REF or package.json version.",
|
|
40
|
+
}),
|
|
41
|
+
},
|
|
42
|
+
handler: (args) => {
|
|
43
|
+
const calculatedVersion = getEnvVersion(args.releaseVersion);
|
|
44
|
+
const tags: string[] = [];
|
|
45
|
+
|
|
46
|
+
try {
|
|
47
|
+
const semVer = new SemVer(calculatedVersion);
|
|
48
|
+
// Check if the last prerelease identifier is a string
|
|
49
|
+
if (semVer.prerelease.length > 0) {
|
|
50
|
+
const lastIdentifier = semVer.prerelease[semVer.prerelease.length - 1];
|
|
51
|
+
if (typeof lastIdentifier === "string") {
|
|
52
|
+
tags.push("dev");
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
} catch (e) {
|
|
56
|
+
// eslint-disable-next-line no-console
|
|
57
|
+
console.warn(`Warn parsing version ${calculatedVersion}:`, e);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Output the --tag options if there are tags
|
|
61
|
+
if (tags.length > 0) {
|
|
62
|
+
// eslint-disable-next-line no-console
|
|
63
|
+
console.log(tags.map((tag) => `--tag ${tag}`).join(" "));
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
}) as ReturnType<typeof command>;
|
|
67
|
+
}
|
package/src/cli/run.sh
CHANGED
|
@@ -1,2 +1,11 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
|
-
|
|
2
|
+
TSX="npx tsx"
|
|
3
|
+
if [ -x ./node_modules/.bin/tsx ]
|
|
4
|
+
then
|
|
5
|
+
TSX=./node_modules/.bin/tsx
|
|
6
|
+
fi
|
|
7
|
+
if [ -x ../node_modules/.bin/tsx ]
|
|
8
|
+
then
|
|
9
|
+
TSX=../node_modules/.bin/tsx
|
|
10
|
+
fi
|
|
11
|
+
exec $TSX $(dirname $0)/main.ts $@
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { command, option, string } from "cmd-ts";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import * as fs from "node:fs";
|
|
4
|
+
|
|
5
|
+
// node ./setup-jsr-json.cjs ./pubdir/deno.json
|
|
6
|
+
function setupDenoJson(packageJsonFile: string, jsrJsonFile: string): void {
|
|
7
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonFile).toString()) as { dependencies: Record<string, string> };
|
|
8
|
+
const jsrJson = JSON.parse(fs.readFileSync(jsrJsonFile).toString()) as {
|
|
9
|
+
name: string;
|
|
10
|
+
exports: Record<string, string>;
|
|
11
|
+
imports: Record<string, string>;
|
|
12
|
+
};
|
|
13
|
+
// self imports
|
|
14
|
+
const jsrJsonImports = Object.fromEntries(Object.entries(jsrJson.exports ?? {}).map(([k, v]) => [path.join(jsrJson.name, k), v]));
|
|
15
|
+
const nodeJsonImports = Object.fromEntries(
|
|
16
|
+
Array.from(Object.entries(packageJson.dependencies ?? {})).map(([k, v]) => [k, `npm:${k}@${v.replace(/^npm:/, "")}`]),
|
|
17
|
+
);
|
|
18
|
+
jsrJson.imports = { ...jsrJson.imports, ...jsrJsonImports, ...nodeJsonImports };
|
|
19
|
+
fs.writeFileSync(jsrJsonFile, JSON.stringify(jsrJson, undefined, 2) + "\n");
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function setUpDenoJsonCmd(): ReturnType<typeof command> {
|
|
23
|
+
return command({
|
|
24
|
+
name: "setup-deno-json",
|
|
25
|
+
description: "setup deno.json",
|
|
26
|
+
version: "1.0.0",
|
|
27
|
+
args: {
|
|
28
|
+
packageJson: option({
|
|
29
|
+
long: "packageJson",
|
|
30
|
+
short: "p",
|
|
31
|
+
defaultValue: () => "package.json",
|
|
32
|
+
defaultValueIsSerializable: true,
|
|
33
|
+
type: string,
|
|
34
|
+
description: "Path to the package.json file, defaults to './package.json'.",
|
|
35
|
+
}),
|
|
36
|
+
jsrJson: option({
|
|
37
|
+
long: "jsrJson",
|
|
38
|
+
short: "j",
|
|
39
|
+
defaultValue: () => "deno.json",
|
|
40
|
+
defaultValueIsSerializable: true,
|
|
41
|
+
type: string,
|
|
42
|
+
description: "Path to the deno.json file, defaults to './deno.json'.",
|
|
43
|
+
}),
|
|
44
|
+
},
|
|
45
|
+
handler: (args) => {
|
|
46
|
+
// eslint-disable-next-line no-console
|
|
47
|
+
console.log(`Setup deno.json ${args.jsrJson} from ${args.packageJson}`);
|
|
48
|
+
setupDenoJson(args.packageJson, args.jsrJson);
|
|
49
|
+
},
|
|
50
|
+
}) as ReturnType<typeof command>;
|
|
51
|
+
}
|
package/src/cli/utils.ts
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import * as ts from "typescript";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import * as fs from "node:fs";
|
|
4
|
+
import * as process from "node:process";
|
|
5
|
+
import { $ } from "zx";
|
|
6
|
+
|
|
7
|
+
// Custom compiler host
|
|
8
|
+
export function createCompilerHost(options: ts.CompilerOptions, version: string): ts.CompilerHost {
|
|
9
|
+
const host = ts.createCompilerHost(options);
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
11
|
+
const myGetSourceFile = host.getSourceFile;
|
|
12
|
+
|
|
13
|
+
host.getSourceFile = (fileName, languageVersion, onError, shouldCreateNewSourceFile): ts.SourceFile => {
|
|
14
|
+
const sourceFile = myGetSourceFile(fileName, languageVersion, onError, shouldCreateNewSourceFile);
|
|
15
|
+
if (!sourceFile) {
|
|
16
|
+
throw new Error("getSourceFile is not defined");
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Patch version.ts during compilation
|
|
20
|
+
if (fileName.endsWith("version.ts") && sourceFile) {
|
|
21
|
+
const newText = `export const VERSION: string = "${version}";`;
|
|
22
|
+
return ts.createSourceFile(fileName, newText, languageVersion);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return sourceFile;
|
|
26
|
+
};
|
|
27
|
+
return host;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function readTSConfig(configPath = "./tsconfig.json"): ts.CompilerOptions {
|
|
31
|
+
// Read the config file
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
33
|
+
const configFile = ts.readConfigFile(configPath, ts.sys.readFile);
|
|
34
|
+
|
|
35
|
+
if (configFile.error) {
|
|
36
|
+
throw new Error(`Error reading tsconfig: ${configFile.error.messageText as string}`);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Parse and resolve the config
|
|
40
|
+
const parsedConfig = ts.parseJsonConfigFileContent(configFile.config, ts.sys, path.dirname(configPath), undefined, configPath);
|
|
41
|
+
|
|
42
|
+
if (parsedConfig.errors.length > 0) {
|
|
43
|
+
const errors = parsedConfig.errors.map((err) => err.messageText as string).join("\n");
|
|
44
|
+
throw new Error(`Error parsing tsconfig: ${errors}`);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return parsedConfig.options; // This is CompilerOptions
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function versionFromPackageJson(): string {
|
|
51
|
+
const packageJson = JSON.parse(fs.readFileSync("package.json").toString()) as { version: string };
|
|
52
|
+
return packageJson.version;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export function getVersion(iversion?: string): string {
|
|
56
|
+
const ghref = iversion || process.env.GITHUB_REF || versionFromPackageJson() || "a/v0.0.0-smoke";
|
|
57
|
+
let lastPart = ghref.split("/").slice(-1)[0];
|
|
58
|
+
if (iversion) {
|
|
59
|
+
return iversion.replace(/^[vdsp]/, "");
|
|
60
|
+
}
|
|
61
|
+
const short = $.sync`git rev-parse --short HEAD`.stdout.trim();
|
|
62
|
+
if (process.env.GITHUB_REF) {
|
|
63
|
+
lastPart = lastPart.replace(/^[vdsp]/, "");
|
|
64
|
+
if (lastPart.match(/^\d+\.\d+\.\d+/)) {
|
|
65
|
+
return lastPart;
|
|
66
|
+
}
|
|
67
|
+
return `0.0.0-dev-ci-${short}`;
|
|
68
|
+
}
|
|
69
|
+
return `0.0.0-dev-local-${Date.now()}`;
|
|
70
|
+
}
|
package/src/future.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export class Future<T> {
|
|
1
|
+
export class Future<T, CTX = void> {
|
|
2
2
|
// readonly id = Math.random();
|
|
3
3
|
readonly #promise: Promise<T>;
|
|
4
4
|
#resolveFn: (value: T) => void = () => {
|
|
@@ -8,7 +8,9 @@ export class Future<T> {
|
|
|
8
8
|
throw new Error("This Promise is not working as expected.");
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
readonly ctx: CTX;
|
|
12
|
+
constructor(ctx?: CTX) {
|
|
13
|
+
this.ctx = ctx;
|
|
12
14
|
this.#promise = new Promise<T>((resolve, reject) => {
|
|
13
15
|
this.#resolveFn = resolve;
|
|
14
16
|
this.#rejectFn = reject;
|
package/src/index.ts
CHANGED
package/src/poller.ts
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { sleep } from "./utils/promise-sleep.js";
|
|
2
|
+
|
|
3
|
+
export interface PollWaitingActionResult {
|
|
4
|
+
readonly state: "waiting";
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export interface PollSuccessActionResult<T> {
|
|
8
|
+
readonly state: "success";
|
|
9
|
+
readonly result: T;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface PollErrorActionResult {
|
|
13
|
+
readonly state: "error";
|
|
14
|
+
readonly error: Error;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export type PollActionResult<T> = PollWaitingActionResult | PollSuccessActionResult<T> | PollErrorActionResult;
|
|
18
|
+
export interface PollerOptions {
|
|
19
|
+
readonly intervalMs: number;
|
|
20
|
+
readonly timeoutMs: number;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export type PollerResult<T> = PollSuccessActionResult<T> | PollErrorActionResult;
|
|
24
|
+
|
|
25
|
+
async function interPoller<T>(fn: () => Promise<PollActionResult<T>>, options: PollerOptions): Promise<PollerResult<T>> {
|
|
26
|
+
do {
|
|
27
|
+
let result: PollActionResult<T>;
|
|
28
|
+
try {
|
|
29
|
+
result = await fn();
|
|
30
|
+
switch (result.state) {
|
|
31
|
+
case "waiting":
|
|
32
|
+
await sleep(options.intervalMs);
|
|
33
|
+
break;
|
|
34
|
+
case "success":
|
|
35
|
+
return result;
|
|
36
|
+
case "error":
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
} catch (err) {
|
|
40
|
+
return {
|
|
41
|
+
state: "error",
|
|
42
|
+
error: err as Error,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
// eslint-disable-next-line no-constant-condition
|
|
46
|
+
} while (true);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export async function poller<T>(
|
|
50
|
+
fn: () => Promise<PollActionResult<T>>,
|
|
51
|
+
ioptions: Partial<PollerOptions> = {},
|
|
52
|
+
): Promise<PollerResult<T>> {
|
|
53
|
+
const options = {
|
|
54
|
+
intervalMs: 1000,
|
|
55
|
+
timeoutMs: 30000,
|
|
56
|
+
...ioptions,
|
|
57
|
+
};
|
|
58
|
+
return Promise.race([
|
|
59
|
+
interPoller(fn, options),
|
|
60
|
+
(async (): Promise<PollErrorActionResult> => {
|
|
61
|
+
await sleep(options.timeoutMs);
|
|
62
|
+
return {
|
|
63
|
+
state: "error",
|
|
64
|
+
error: new Error("Polling timed out"),
|
|
65
|
+
};
|
|
66
|
+
})(),
|
|
67
|
+
]);
|
|
68
|
+
}
|
package/src/resolve-once.ts
CHANGED
|
@@ -81,7 +81,7 @@ type ResolveState = "initial" | "processed" | "waiting" | "processing";
|
|
|
81
81
|
// export type VoidEqualUndefined<T> = T extends undefined ? void : T
|
|
82
82
|
export type ResultOnce<R> = R extends Promise<infer T> ? Promise<T> : R;
|
|
83
83
|
|
|
84
|
-
interface ResolveOnceIf<R, CTX = void> {
|
|
84
|
+
export interface ResolveOnceIf<R, CTX = void> {
|
|
85
85
|
get ready(): boolean;
|
|
86
86
|
get value(): UnPromisify<R> | undefined;
|
|
87
87
|
get error(): Error | undefined;
|
|
@@ -398,7 +398,7 @@ export interface KeyedParam<K, V> {
|
|
|
398
398
|
readonly lru: Partial<LRUParam<V, K>>;
|
|
399
399
|
}
|
|
400
400
|
|
|
401
|
-
type AddKeyedParam<K, V, CTX extends NonNullable<object>> = KeyedParam<K, V> & { readonly ctx: CTX };
|
|
401
|
+
export type AddKeyedParam<K, V, CTX extends NonNullable<object>> = KeyedParam<K, V> & { readonly ctx: CTX };
|
|
402
402
|
|
|
403
403
|
export class Keyed<T extends { reset: () => void }, K = string, CTX extends NonNullable<object> = object> {
|
|
404
404
|
protected readonly _map: LRUMap<K, T>;
|
|
@@ -468,7 +468,7 @@ export class Keyed<T extends { reset: () => void }, K = string, CTX extends NonN
|
|
|
468
468
|
}
|
|
469
469
|
}
|
|
470
470
|
|
|
471
|
-
interface KeyItem<K, V> {
|
|
471
|
+
export interface KeyItem<K, V> {
|
|
472
472
|
readonly key: K;
|
|
473
473
|
readonly value: Result<V>;
|
|
474
474
|
}
|
|
@@ -505,7 +505,7 @@ export class KeyedResolvOnce<T, K = string, CTX extends NonNullable<object> = ob
|
|
|
505
505
|
}
|
|
506
506
|
}
|
|
507
507
|
|
|
508
|
-
type AddKey<X extends NonNullable<object>, K> = X & { key: K };
|
|
508
|
+
export type AddKey<X extends NonNullable<object>, K> = X & { key: K };
|
|
509
509
|
type WithCTX<K, T, CTX extends NonNullable<object>> = KeyedParam<K, ResolveSeq<T, AddKey<CTX, K>>> & { readonly ctx: CTX };
|
|
510
510
|
|
|
511
511
|
export class KeyedResolvSeq<T extends NonNullable<unknown>, K = string, CTX extends NonNullable<object> = object> extends Keyed<
|
package/src/utils/index.ts
CHANGED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pause execution for the given number of milliseconds.
|
|
3
|
+
*
|
|
4
|
+
* Example:
|
|
5
|
+
* await sleep(500);
|
|
6
|
+
*
|
|
7
|
+
* Optionally accepts an AbortSignal to cancel the sleep (will reject with an AbortError).
|
|
8
|
+
*/
|
|
9
|
+
export function sleep(ms: number, signal?: AbortSignal): Promise<void> {
|
|
10
|
+
return new Promise<void>((resolve, reject) => {
|
|
11
|
+
if (ms <= 0) {
|
|
12
|
+
resolve();
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
if (signal?.aborted) {
|
|
17
|
+
const err = new Error("Aborted");
|
|
18
|
+
(err as { name: string }).name = "AbortError";
|
|
19
|
+
reject(err);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const id = setTimeout(() => {
|
|
24
|
+
cleanup();
|
|
25
|
+
resolve();
|
|
26
|
+
}, ms);
|
|
27
|
+
|
|
28
|
+
const onAbort = (): void => {
|
|
29
|
+
cleanup();
|
|
30
|
+
const err = new Error("Aborted");
|
|
31
|
+
(err as { name: string }).name = "AbortError";
|
|
32
|
+
reject(err);
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
function cleanup(): void {
|
|
36
|
+
clearTimeout(id);
|
|
37
|
+
signal?.removeEventListener("abort", onAbort);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
41
|
+
});
|
|
42
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-version-ts-cmd.d.ts","sourceRoot":"","sources":["../../../../src/cli/generate-version-ts-cmd.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAkB,MAAM,QAAQ,CAAC;AAGjD,wBAAgB,oBAAoB,IAAI,UAAU,CAAC,OAAO,OAAO,CAAC,CAsCjE"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.generateVersionTsCmd = generateVersionTsCmd;
|
|
37
|
+
const ts = __importStar(require("typescript"));
|
|
38
|
+
const cmd_ts_1 = require("cmd-ts");
|
|
39
|
+
const utils_js_1 = require("./utils.js");
|
|
40
|
+
function generateVersionTsCmd() {
|
|
41
|
+
return (0, cmd_ts_1.command)({
|
|
42
|
+
name: "fireproof build cli",
|
|
43
|
+
description: "helps to build fp",
|
|
44
|
+
version: "1.0.0",
|
|
45
|
+
args: {
|
|
46
|
+
version: (0, cmd_ts_1.option)({
|
|
47
|
+
long: "version",
|
|
48
|
+
short: "v",
|
|
49
|
+
defaultValue: () => (0, utils_js_1.getVersion)(),
|
|
50
|
+
defaultValueIsSerializable: true,
|
|
51
|
+
type: cmd_ts_1.string,
|
|
52
|
+
description: "Version to patch in, defaults to reading from package.json.",
|
|
53
|
+
}),
|
|
54
|
+
versionFile: (0, cmd_ts_1.option)({
|
|
55
|
+
long: "versionFile",
|
|
56
|
+
short: "f",
|
|
57
|
+
defaultValue: () => "src/version.ts",
|
|
58
|
+
defaultValueIsSerializable: true,
|
|
59
|
+
type: cmd_ts_1.string,
|
|
60
|
+
description: "Path to the file containing the version, defaults to './src/version.ts'.",
|
|
61
|
+
}),
|
|
62
|
+
tsconfig: (0, cmd_ts_1.option)({
|
|
63
|
+
long: "tsconfig",
|
|
64
|
+
short: "t",
|
|
65
|
+
defaultValue: () => "tsconfig.json",
|
|
66
|
+
defaultValueIsSerializable: true,
|
|
67
|
+
type: cmd_ts_1.string,
|
|
68
|
+
description: "Path to the tsconfig.json file, defaults to './tsconfig.json'.",
|
|
69
|
+
}),
|
|
70
|
+
},
|
|
71
|
+
handler: (args) => {
|
|
72
|
+
const options = (0, utils_js_1.readTSConfig)(args.tsconfig);
|
|
73
|
+
const host = (0, utils_js_1.createCompilerHost)(options, args.version);
|
|
74
|
+
const program = ts.createProgram([args.versionFile], options, host);
|
|
75
|
+
program.emit();
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=generate-version-ts-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-version-ts-cmd.js","sourceRoot":"","sources":["../../../../src/cli/generate-version-ts-cmd.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAY,EAAE,uCAAmB;AACjC,mCAAiD;AACjD,yCAA0E;AAE1E,gCAAmE;IACjE,OAAO,IAAA,gBAAO,EAAC;QACb,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,mBAAmB;QAChC,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE;YACJ,OAAO,EAAE,IAAA,eAAM,EAAC;gBACd,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,GAAG;gBACV,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,qBAAU,GAAE;gBAChC,0BAA0B,EAAE,IAAI;gBAChC,IAAI,EAAE,eAAM;gBACZ,WAAW,EAAE,6DAA6D;aAC3E,CAAC;YACF,WAAW,EAAE,IAAA,eAAM,EAAC;gBAClB,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,GAAG;gBACV,YAAY,EAAE,GAAG,EAAE,CAAC,gBAAgB;gBACpC,0BAA0B,EAAE,IAAI;gBAChC,IAAI,EAAE,eAAM;gBACZ,WAAW,EAAE,0EAA0E;aACxF,CAAC;YACF,QAAQ,EAAE,IAAA,eAAM,EAAC;gBACf,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,GAAG;gBACV,YAAY,EAAE,GAAG,EAAE,CAAC,eAAe;gBACnC,0BAA0B,EAAE,IAAI;gBAChC,IAAI,EAAE,eAAM;gBACZ,WAAW,EAAE,gEAAgE;aAC9E,CAAC;SACH;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,IAAA,uBAAY,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,IAAI,GAAG,IAAA,6BAAkB,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YACpE,OAAO,CAAC,IAAI,EAAE,CAAC;QAAA,CAChB;KACF,CAA+B,CAAC;AAAA,CAClC"}
|
package/ts/cjs/cli/main.js
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const cmd_ts_1 = require("cmd-ts");
|
|
4
4
|
const patch_version_cmd_js_1 = require("./patch-version-cmd.js");
|
|
5
|
+
const generate_version_ts_cmd_js_1 = require("./generate-version-ts-cmd.js");
|
|
6
|
+
const setup_deno_json_cmd_js_1 = require("./setup-deno-json-cmd.js");
|
|
7
|
+
const prepare_pubdir_cmd_js_1 = require("./prepare-pubdir-cmd.js");
|
|
8
|
+
const publish_tags_cmd_js_1 = require("./publish-tags-cmd.js");
|
|
5
9
|
(async () => {
|
|
6
10
|
const cmd = (0, cmd_ts_1.subcommands)({
|
|
7
11
|
name: "cement",
|
|
@@ -9,9 +13,10 @@ const patch_version_cmd_js_1 = require("./patch-version-cmd.js");
|
|
|
9
13
|
version: "1.0.0",
|
|
10
14
|
cmds: {
|
|
11
15
|
patchVersion: (0, patch_version_cmd_js_1.patchVersionCmd)(),
|
|
12
|
-
generateVersionTs: (0,
|
|
13
|
-
setUpDenoJson: (0,
|
|
14
|
-
preparePubdir: (0,
|
|
16
|
+
generateVersionTs: (0, generate_version_ts_cmd_js_1.generateVersionTsCmd)(),
|
|
17
|
+
setUpDenoJson: (0, setup_deno_json_cmd_js_1.setUpDenoJsonCmd)(),
|
|
18
|
+
preparePubdir: (0, prepare_pubdir_cmd_js_1.preparePubdirCmd)(),
|
|
19
|
+
publishTags: (0, publish_tags_cmd_js_1.publishTagsCmd)(),
|
|
15
20
|
},
|
|
16
21
|
});
|
|
17
22
|
await (0, cmd_ts_1.run)(cmd, process.argv.slice(2));
|
package/ts/cjs/cli/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../src/cli/main.ts"],"names":[],"mappings":";;AAAA,mCAA0C;AAC1C,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../src/cli/main.ts"],"names":[],"mappings":";;AAAA,mCAA0C;AAC1C,iEAAyD;AACzD,6EAAoE;AACpE,qEAA4D;AAC5D,mEAA2D;AAC3D,+DAAuD;AAEvD,CAAC,KAAK,IAAmB,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,IAAA,oBAAW,EAAC;QACtB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,YAAY;QACzB,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE;YACJ,YAAY,EAAE,IAAA,sCAAe,GAAE;YAC/B,iBAAiB,EAAE,IAAA,iDAAoB,GAAE;YACzC,aAAa,EAAE,IAAA,yCAAgB,GAAE;YACjC,aAAa,EAAE,IAAA,wCAAgB,GAAE;YACjC,WAAW,EAAE,IAAA,oCAAc,GAAE;SAC9B;KACF,CAAC,CAAC;IAEH,MAAM,IAAA,YAAG,EAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,CAEvC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
1
|
import { command } from "cmd-ts";
|
|
2
|
-
export declare function generateVersionTsCmd(): ReturnType<typeof command>;
|
|
3
2
|
export declare function patchVersionCmd(): ReturnType<typeof command>;
|
|
4
|
-
export declare function setUpDenoJsonCmd(): ReturnType<typeof command>;
|
|
5
|
-
export declare function preparePubdir(pubdir: string, version: string, baseDir: string, srcDir: string): Promise<void>;
|
|
6
|
-
export declare function preparePubdirCmd(): ReturnType<typeof command>;
|
|
7
3
|
//# sourceMappingURL=patch-version-cmd.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patch-version-cmd.d.ts","sourceRoot":"","sources":["../../../../src/cli/patch-version-cmd.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"patch-version-cmd.d.ts","sourceRoot":"","sources":["../../../../src/cli/patch-version-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAmC,MAAM,QAAQ,CAAC;AAKlE,wBAAgB,eAAe,IAAI,UAAU,CAAC,OAAO,OAAO,CAAC,CA+B5D"}
|