react-cheminfo 0.14.0 → 0.15.0
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/README.md +79 -21
- package/lib/about/core/about.d.ts +13 -7
- package/lib/about/core/about.d.ts.map +1 -1
- package/lib/about/core/about.js +4 -2
- package/lib/about/core/about.js.map +1 -1
- package/lib/about/ui/AboutBuild.d.ts +20 -0
- package/lib/about/ui/AboutBuild.d.ts.map +1 -0
- package/lib/about/ui/AboutBuild.js +38 -0
- package/lib/about/ui/AboutBuild.js.map +1 -0
- package/lib/about/ui/AboutPage.d.ts +7 -0
- package/lib/about/ui/AboutPage.d.ts.map +1 -1
- package/lib/about/ui/AboutPage.js +5 -2
- package/lib/about/ui/AboutPage.js.map +1 -1
- package/lib/about/ui/index.d.ts +2 -0
- package/lib/about/ui/index.d.ts.map +1 -1
- package/lib/about/ui/index.js +1 -0
- package/lib/about/ui/index.js.map +1 -1
- package/lib/build/core/buildInfo.d.ts +39 -0
- package/lib/build/core/buildInfo.d.ts.map +1 -0
- package/lib/build/core/buildInfo.js +20 -0
- package/lib/build/core/buildInfo.js.map +1 -0
- package/lib/build/core/current.d.ts +12 -0
- package/lib/build/core/current.d.ts.map +1 -0
- package/lib/build/core/current.js +11 -0
- package/lib/build/core/current.js.map +1 -0
- package/lib/build/core/index.d.ts +3 -0
- package/lib/build/core/index.d.ts.map +1 -0
- package/lib/build/core/index.js +2 -0
- package/lib/build/core/index.js.map +1 -0
- package/lib/build/vite/buildInfo.d.ts +57 -0
- package/lib/build/vite/buildInfo.d.ts.map +1 -0
- package/lib/build/vite/buildInfo.js +151 -0
- package/lib/build/vite/buildInfo.js.map +1 -0
- package/lib/build/vite/gitHead.d.ts +29 -0
- package/lib/build/vite/gitHead.d.ts.map +1 -0
- package/lib/build/vite/gitHead.js +102 -0
- package/lib/build/vite/gitHead.js.map +1 -0
- package/lib/build/vite/index.d.ts +4 -0
- package/lib/build/vite/index.d.ts.map +1 -0
- package/lib/build/vite/index.js +3 -0
- package/lib/build/vite/index.js.map +1 -0
- package/lib/build-info.d.ts +3 -0
- package/lib/build-info.d.ts.map +1 -0
- package/lib/build-info.js +2 -0
- package/lib/build-info.js.map +1 -0
- package/lib/core.d.ts +1 -0
- package/lib/core.d.ts.map +1 -1
- package/lib/core.js +1 -0
- package/lib/core.js.map +1 -1
- package/lib/credits/core/credits.d.ts +18 -0
- package/lib/credits/core/credits.d.ts.map +1 -1
- package/lib/credits/core/credits.js +21 -0
- package/lib/credits/core/credits.js.map +1 -1
- package/lib/ecosystem/ui/Wordmark.d.ts +14 -3
- package/lib/ecosystem/ui/Wordmark.d.ts.map +1 -1
- package/lib/ecosystem/ui/Wordmark.js +8 -4
- package/lib/ecosystem/ui/Wordmark.js.map +1 -1
- package/lib/vite.d.ts +1 -0
- package/lib/vite.d.ts.map +1 -1
- package/lib/vite.js +1 -0
- package/lib/vite.js.map +1 -1
- package/package.json +2 -1
- package/src/about/core/about.ts +18 -9
- package/src/about/ui/AboutBuild.tsx +83 -0
- package/src/about/ui/AboutPage.tsx +15 -7
- package/src/about/ui/index.ts +2 -0
- package/src/build/core/buildInfo.ts +48 -0
- package/src/build/core/current.ts +12 -0
- package/src/build/core/index.ts +2 -0
- package/src/build/vite/buildInfo.ts +178 -0
- package/src/build/vite/gitHead.ts +114 -0
- package/src/build/vite/index.ts +8 -0
- package/src/build-info.ts +2 -0
- package/src/core.ts +1 -0
- package/src/credits/core/credits.ts +21 -0
- package/src/ecosystem/ui/Wordmark.tsx +22 -7
- package/src/vite.ts +1 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tell a site which build of itself it is running.
|
|
3
|
+
*
|
|
4
|
+
* Every site of the family carries an About page, and the one thing that page
|
|
5
|
+
* cannot state from a hand-written record is the release it is serving. So the
|
|
6
|
+
* build states it: the plugin resolves the version, the day and the commit
|
|
7
|
+
* once, hands them to the page through a virtual module, and writes the same
|
|
8
|
+
* record to `build-info.json` so the whole family can be asked what it is
|
|
9
|
+
* running with one request each.
|
|
10
|
+
*/
|
|
11
|
+
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
12
|
+
import { dirname, join, resolve } from 'node:path';
|
|
13
|
+
import { commitFromEnvironment, readGitHead } from "./gitHead.js";
|
|
14
|
+
/** The module a site imports its build record from. */
|
|
15
|
+
export const BUILD_INFO_MODULE = 'react-cheminfo/build-info';
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the build's own version, instant and commit, and publish them.
|
|
18
|
+
*
|
|
19
|
+
* The site reads them from the module the plugin fills in:
|
|
20
|
+
*
|
|
21
|
+
* ```ts
|
|
22
|
+
* import { BUILD_INFO } from 'react-cheminfo/build-info';
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* That module exists on disk and exports `undefined`, so a Playwright spec or
|
|
26
|
+
* a unit test importing the same About record in plain Node still resolves it —
|
|
27
|
+
* a virtual specifier does not, and the whole suite dies on the import.
|
|
28
|
+
* @param options - See {@link BuildInfoOptions}.
|
|
29
|
+
* @returns The Vite plugin.
|
|
30
|
+
*/
|
|
31
|
+
export function cheminfoBuildInfo(options = {}) {
|
|
32
|
+
const { fileName = 'build-info.json' } = options;
|
|
33
|
+
let root = process.cwd();
|
|
34
|
+
let outDir = 'dist';
|
|
35
|
+
let info = resolveBuildInfo(root);
|
|
36
|
+
return {
|
|
37
|
+
name: 'cheminfo-build-info',
|
|
38
|
+
// Vite's own resolver runs first and would hand back the module on disk,
|
|
39
|
+
// which exports `undefined`; and the dependency optimizer pre-bundles a
|
|
40
|
+
// bare specifier without asking a plugin at all.
|
|
41
|
+
enforce: 'pre',
|
|
42
|
+
config() {
|
|
43
|
+
return { optimizeDeps: { exclude: [BUILD_INFO_MODULE] } };
|
|
44
|
+
},
|
|
45
|
+
configResolved(config) {
|
|
46
|
+
root = config.root;
|
|
47
|
+
outDir = config.build.outDir;
|
|
48
|
+
info = resolveBuildInfo(root);
|
|
49
|
+
},
|
|
50
|
+
resolveId(id) {
|
|
51
|
+
return id === BUILD_INFO_MODULE ? RESOLVED_MODULE : undefined;
|
|
52
|
+
},
|
|
53
|
+
load(id) {
|
|
54
|
+
if (id !== RESOLVED_MODULE)
|
|
55
|
+
return undefined;
|
|
56
|
+
return `export const BUILD_INFO = ${JSON.stringify(info)};\n`;
|
|
57
|
+
},
|
|
58
|
+
closeBundle() {
|
|
59
|
+
if (fileName === false)
|
|
60
|
+
return;
|
|
61
|
+
const target = resolve(root, outDir, fileName);
|
|
62
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
63
|
+
writeFileSync(target, `${JSON.stringify(info, null, 2)}\n`);
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* What the build knows about itself, read off the checkout it runs in.
|
|
69
|
+
* @param root - The project Vite is building, which may sit under the
|
|
70
|
+
* repository root as `frontend` does.
|
|
71
|
+
* @returns The record, with whatever it could not resolve left out.
|
|
72
|
+
*/
|
|
73
|
+
export function resolveBuildInfo(root) {
|
|
74
|
+
const repository = findRepositoryRoot(root);
|
|
75
|
+
return {
|
|
76
|
+
version: readVersion(repository) ?? readVersion(root) ?? UNRELEASED,
|
|
77
|
+
builtAt: buildInstant(),
|
|
78
|
+
commit: readGitHead(repository) ?? commitFromEnvironment(),
|
|
79
|
+
reactCheminfo: readOwnVersion(),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* The topmost directory of the run of ancestors that all hold a `package.json`.
|
|
84
|
+
*
|
|
85
|
+
* It is the repository root, and it is where the released version lives:
|
|
86
|
+
* release-please bumps the root `package.json`, while the `frontend` workspace
|
|
87
|
+
* of a site that has one keeps the `0.0.0` it was scaffolded with.
|
|
88
|
+
* @param start - Where to start climbing.
|
|
89
|
+
* @returns The highest such directory, or `start` when it holds none itself.
|
|
90
|
+
*/
|
|
91
|
+
export function findRepositoryRoot(start) {
|
|
92
|
+
let directory = resolve(start);
|
|
93
|
+
let highest = directory;
|
|
94
|
+
for (;;) {
|
|
95
|
+
if (readPackage(directory) !== undefined)
|
|
96
|
+
highest = directory;
|
|
97
|
+
const parent = dirname(directory);
|
|
98
|
+
// The run has ended: a directory with no package.json is above the project,
|
|
99
|
+
// and so is everything above it.
|
|
100
|
+
if (parent === directory || readPackage(parent) === undefined) {
|
|
101
|
+
return highest;
|
|
102
|
+
}
|
|
103
|
+
directory = parent;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
function readVersion(directory) {
|
|
107
|
+
const version = readPackage(directory)?.version;
|
|
108
|
+
return typeof version === 'string' && version.length > 0
|
|
109
|
+
? version
|
|
110
|
+
: undefined;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* The version of this package, so a site can be asked which chrome it runs.
|
|
114
|
+
* @returns The version, or `undefined` when the manifest is out of reach.
|
|
115
|
+
*/
|
|
116
|
+
function readOwnVersion() {
|
|
117
|
+
let directory = import.meta.dirname;
|
|
118
|
+
for (;;) {
|
|
119
|
+
const manifest = readPackage(directory);
|
|
120
|
+
if (manifest?.name === OWN_NAME && typeof manifest.version === 'string') {
|
|
121
|
+
return manifest.version;
|
|
122
|
+
}
|
|
123
|
+
const parent = dirname(directory);
|
|
124
|
+
if (parent === directory)
|
|
125
|
+
return undefined;
|
|
126
|
+
directory = parent;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
function readPackage(directory) {
|
|
130
|
+
try {
|
|
131
|
+
return JSON.parse(readFileSync(join(directory, 'package.json'), 'utf8'));
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* When the build ran, honouring `SOURCE_DATE_EPOCH` so a reproducible build
|
|
139
|
+
* stays reproducible.
|
|
140
|
+
* @returns The instant, to the second, as `2026-09-16T09:41:07Z`.
|
|
141
|
+
*/
|
|
142
|
+
function buildInstant() {
|
|
143
|
+
const epoch = Number(process.env.SOURCE_DATE_EPOCH);
|
|
144
|
+
const when = Number.isFinite(epoch) && epoch > 0 ? epoch * 1000 : Date.now();
|
|
145
|
+
return `${new Date(when).toISOString().slice(0, SECOND_LENGTH)}Z`;
|
|
146
|
+
}
|
|
147
|
+
const RESOLVED_MODULE = `\0${BUILD_INFO_MODULE}`;
|
|
148
|
+
const OWN_NAME = 'react-cheminfo';
|
|
149
|
+
const UNRELEASED = '0.0.0';
|
|
150
|
+
const SECOND_LENGTH = 19;
|
|
151
|
+
//# sourceMappingURL=buildInfo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildInfo.js","sourceRoot":"","sources":["../../../src/build/vite/buildInfo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMnD,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAElE,uDAAuD;AACvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,2BAA2B,CAAC;AAY7D;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAA4B,EAAE;IAC9D,MAAM,EAAE,QAAQ,GAAG,iBAAiB,EAAE,GAAG,OAAO,CAAC;IACjD,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,IAAI,GAAc,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAE7C,OAAO;QACL,IAAI,EAAE,qBAAqB;QAC3B,yEAAyE;QACzE,wEAAwE;QACxE,iDAAiD;QACjD,OAAO,EAAE,KAAK;QACd,MAAM;YACJ,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC;QAC5D,CAAC;QACD,cAAc,CAAC,MAAM;YACnB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YACnB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YAC7B,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,SAAS,CAAC,EAAE;YACV,OAAO,EAAE,KAAK,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,EAAE;YACL,IAAI,EAAE,KAAK,eAAe;gBAAE,OAAO,SAAS,CAAC;YAC7C,OAAO,6BAA6B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAChE,CAAC;QACD,WAAW;YACT,IAAI,QAAQ,KAAK,KAAK;gBAAE,OAAO;YAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC/C,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,aAAa,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAE5C,OAAO;QACL,OAAO,EAAE,WAAW,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,UAAU;QACnE,OAAO,EAAE,YAAY,EAAE;QACvB,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,IAAI,qBAAqB,EAAE;QAC1D,aAAa,EAAE,cAAc,EAAE;KAChC,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,IAAI,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,OAAO,GAAG,SAAS,CAAC;IAExB,SAAS,CAAC;QACR,IAAI,WAAW,CAAC,SAAS,CAAC,KAAK,SAAS;YAAE,OAAO,GAAG,SAAS,CAAC;QAC9D,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAClC,4EAA4E;QAC5E,iCAAiC;QACjC,IAAI,MAAM,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;YAC9D,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,SAAS,GAAG,MAAM,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,SAAiB;IACpC,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAChD,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QACtD,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc;IACrB,IAAI,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;IAEpC,SAAS,CAAC;QACR,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,QAAQ,EAAE,IAAI,KAAK,QAAQ,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACxE,OAAO,QAAQ,CAAC,OAAO,CAAC;QAC1B,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC3C,SAAS,GAAG,MAAM,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAClB,SAAiB;IAEjB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CACf,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAC3B,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY;IACnB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7E,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC;AACpE,CAAC;AAED,MAAM,eAAe,GAAG,KAAK,iBAAiB,EAAE,CAAC;AACjD,MAAM,QAAQ,GAAG,gBAAgB,CAAC;AAClC,MAAM,UAAU,GAAG,OAAO,CAAC;AAC3B,MAAM,aAAa,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read the commit a build is made from, without running git.
|
|
3
|
+
*
|
|
4
|
+
* The image build cannot run git: `.dockerignore` keeps `.git` out of the
|
|
5
|
+
* context and `node:alpine` ships no git binary, while the shared
|
|
6
|
+
* `docker-image` workflow passes no build argument a commit could arrive in.
|
|
7
|
+
* What a site does instead is let three paths back into the context —
|
|
8
|
+
* `.git/HEAD`, `.git/refs` and `.git/packed-refs`, a few kilobytes — and those
|
|
9
|
+
* three are enough to resolve the hash by reading files.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* The commit `HEAD` names, read from the repository above a directory.
|
|
13
|
+
* @param start - Where to start looking; every ancestor is tried in turn.
|
|
14
|
+
* @returns The full hash, or `undefined` when the repository is out of reach —
|
|
15
|
+
* which is what a build sees when the three paths were not let back in.
|
|
16
|
+
*/
|
|
17
|
+
export declare function readGitHead(start: string): string | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* The commit named by the environment, for a build that cannot see `.git`.
|
|
20
|
+
* @returns The hash, or `undefined` when no variable names one.
|
|
21
|
+
*/
|
|
22
|
+
export declare function commitFromEnvironment(): string | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* The `.git` directory governing a path.
|
|
25
|
+
* @param start - Where to start looking.
|
|
26
|
+
* @returns Its absolute path, or `undefined` when there is none above `start`.
|
|
27
|
+
*/
|
|
28
|
+
export declare function findGitDir(start: string): string | undefined;
|
|
29
|
+
//# sourceMappingURL=gitHead.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitHead.d.ts","sourceRoot":"","sources":["../../../src/build/vite/gitHead.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiB7D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,SAAS,CAM1D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAkB5D"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read the commit a build is made from, without running git.
|
|
3
|
+
*
|
|
4
|
+
* The image build cannot run git: `.dockerignore` keeps `.git` out of the
|
|
5
|
+
* context and `node:alpine` ships no git binary, while the shared
|
|
6
|
+
* `docker-image` workflow passes no build argument a commit could arrive in.
|
|
7
|
+
* What a site does instead is let three paths back into the context —
|
|
8
|
+
* `.git/HEAD`, `.git/refs` and `.git/packed-refs`, a few kilobytes — and those
|
|
9
|
+
* three are enough to resolve the hash by reading files.
|
|
10
|
+
*/
|
|
11
|
+
import { readFileSync } from 'node:fs';
|
|
12
|
+
import { dirname, isAbsolute, join, resolve } from 'node:path';
|
|
13
|
+
/**
|
|
14
|
+
* The commit `HEAD` names, read from the repository above a directory.
|
|
15
|
+
* @param start - Where to start looking; every ancestor is tried in turn.
|
|
16
|
+
* @returns The full hash, or `undefined` when the repository is out of reach —
|
|
17
|
+
* which is what a build sees when the three paths were not let back in.
|
|
18
|
+
*/
|
|
19
|
+
export function readGitHead(start) {
|
|
20
|
+
const gitDir = findGitDir(start);
|
|
21
|
+
if (gitDir === undefined)
|
|
22
|
+
return undefined;
|
|
23
|
+
const head = readText(join(gitDir, 'HEAD'));
|
|
24
|
+
if (head === undefined)
|
|
25
|
+
return undefined;
|
|
26
|
+
// A checkout made by `actions/checkout` is detached, so `HEAD` is the hash
|
|
27
|
+
// itself and neither `refs` nor `packed-refs` is read at all.
|
|
28
|
+
if (!head.startsWith('ref:'))
|
|
29
|
+
return asCommit(head);
|
|
30
|
+
const ref = head.slice('ref:'.length).trim();
|
|
31
|
+
const loose = readText(join(gitDir, ref));
|
|
32
|
+
return (asCommit(loose) ??
|
|
33
|
+
commitInPackedRefs(readText(join(gitDir, 'packed-refs')), ref));
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The commit named by the environment, for a build that cannot see `.git`.
|
|
37
|
+
* @returns The hash, or `undefined` when no variable names one.
|
|
38
|
+
*/
|
|
39
|
+
export function commitFromEnvironment() {
|
|
40
|
+
return (asCommit(process.env.GITHUB_SHA) ??
|
|
41
|
+
asCommit(process.env.SOURCE_COMMIT) ??
|
|
42
|
+
asCommit(process.env.GIT_COMMIT));
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The `.git` directory governing a path.
|
|
46
|
+
* @param start - Where to start looking.
|
|
47
|
+
* @returns Its absolute path, or `undefined` when there is none above `start`.
|
|
48
|
+
*/
|
|
49
|
+
export function findGitDir(start) {
|
|
50
|
+
let directory = resolve(start);
|
|
51
|
+
for (;;) {
|
|
52
|
+
const candidate = join(directory, '.git');
|
|
53
|
+
const text = readText(candidate);
|
|
54
|
+
// A worktree and a submodule write a file naming the real directory; a
|
|
55
|
+
// plain repository has the directory itself, which reads as `undefined`.
|
|
56
|
+
if (text?.startsWith('gitdir:')) {
|
|
57
|
+
const target = text.slice('gitdir:'.length).trim();
|
|
58
|
+
return isAbsolute(target) ? target : resolve(directory, target);
|
|
59
|
+
}
|
|
60
|
+
if (readText(join(candidate, 'HEAD')) !== undefined)
|
|
61
|
+
return candidate;
|
|
62
|
+
const parent = dirname(directory);
|
|
63
|
+
if (parent === directory)
|
|
64
|
+
return undefined;
|
|
65
|
+
directory = parent;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The hash a packed `refs` file gives a ref.
|
|
70
|
+
* @param packed - The contents of `packed-refs`, when there is one.
|
|
71
|
+
* @param ref - The ref to look up, e.g. `refs/heads/main`.
|
|
72
|
+
* @returns The hash, or `undefined` when the file does not carry the ref.
|
|
73
|
+
*/
|
|
74
|
+
function commitInPackedRefs(packed, ref) {
|
|
75
|
+
if (packed === undefined)
|
|
76
|
+
return undefined;
|
|
77
|
+
for (const line of packed.split('\n')) {
|
|
78
|
+
// `#` is the header and `^` the object a tag points at: neither is a ref.
|
|
79
|
+
if (line.startsWith('#') || line.startsWith('^'))
|
|
80
|
+
continue;
|
|
81
|
+
const space = line.indexOf(' ');
|
|
82
|
+
if (space === -1 || line.slice(space + 1).trim() !== ref)
|
|
83
|
+
continue;
|
|
84
|
+
return asCommit(line.slice(0, space));
|
|
85
|
+
}
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
function asCommit(value) {
|
|
89
|
+
const text = value?.trim();
|
|
90
|
+
return text !== undefined && COMMIT.test(text) ? text : undefined;
|
|
91
|
+
}
|
|
92
|
+
function readText(path) {
|
|
93
|
+
try {
|
|
94
|
+
return readFileSync(path, 'utf8').trim();
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Forty hexadecimal characters, or sixty-four in a repository on sha256.
|
|
101
|
+
const COMMIT = /^[\da-f]{40}(?:[\da-f]{24})?$/;
|
|
102
|
+
//# sourceMappingURL=gitHead.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitHead.js","sourceRoot":"","sources":["../../../src/build/vite/gitHead.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export type { BuildInfoOptions } from './buildInfo.ts';
|
|
2
|
+
export { BUILD_INFO_MODULE, cheminfoBuildInfo, findRepositoryRoot, resolveBuildInfo, } from './buildInfo.ts';
|
|
3
|
+
export { commitFromEnvironment, findGitDir, readGitHead } from './gitHead.ts';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/build/vite/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/build/vite/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-info.d.ts","sourceRoot":"","sources":["../src/build-info.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-info.js","sourceRoot":"","sources":["../src/build-info.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC"}
|
package/lib/core.d.ts
CHANGED
package/lib/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
|
package/lib/core.js
CHANGED
package/lib/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,+EAA+E;AAC/E,2EAA2E;AAC3E,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,0EAA0E;AAC1E,8EAA8E;AAC9E,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,+EAA+E;AAC/E,2EAA2E;AAC3E,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,0EAA0E;AAC1E,8EAA8E;AAC9E,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
|
|
@@ -151,6 +151,24 @@ export declare const CREDITS: readonly [{
|
|
|
151
151
|
readonly href: "https://dndkit.com/";
|
|
152
152
|
readonly description: "the dragging that arranges things into an order.";
|
|
153
153
|
readonly license: "MIT";
|
|
154
|
+
}, {
|
|
155
|
+
readonly id: "react-roi";
|
|
156
|
+
readonly name: "react-roi";
|
|
157
|
+
readonly href: "https://github.com/zakodium-oss/react-roi";
|
|
158
|
+
readonly description: "the box a region of an image is drawn with.";
|
|
159
|
+
readonly license: "MIT";
|
|
160
|
+
}, {
|
|
161
|
+
readonly id: "file-collection";
|
|
162
|
+
readonly name: "file-collection";
|
|
163
|
+
readonly href: "https://github.com/cheminfo/file-collection";
|
|
164
|
+
readonly description: "the reader that takes dropped files, folders and archives.";
|
|
165
|
+
readonly license: "MIT";
|
|
166
|
+
}, {
|
|
167
|
+
readonly id: "zip-js";
|
|
168
|
+
readonly name: "zip.js";
|
|
169
|
+
readonly href: "https://github.com/gildas-lormeau/zip.js";
|
|
170
|
+
readonly description: "the ZIP archives that are read and written in the browser.";
|
|
171
|
+
readonly license: "BSD-3-Clause";
|
|
154
172
|
}, {
|
|
155
173
|
readonly id: "preact-signals";
|
|
156
174
|
readonly name: "Preact Signals";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credits.d.ts","sourceRoot":"","sources":["../../../src/credits/core/credits.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qCAAqC;AACrC,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAEtD;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,QAAQ,EAAE,GAAG,WAAW,EAAE,CAU/D;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAE5D;AAED;;;GAGG;AACH,eAAO,MAAM,OAAO
|
|
1
|
+
{"version":3,"file":"credits.d.ts","sourceRoot":"","sources":["../../../src/credits/core/credits.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qCAAqC;AACrC,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAEtD;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,QAAQ,EAAE,GAAG,WAAW,EAAE,CAU/D;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAE5D;AAED;;;GAGG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyNuB,CAAC"}
|
|
@@ -165,6 +165,27 @@ export const CREDITS = [
|
|
|
165
165
|
description: 'the dragging that arranges things into an order.',
|
|
166
166
|
license: 'MIT',
|
|
167
167
|
},
|
|
168
|
+
{
|
|
169
|
+
id: 'react-roi',
|
|
170
|
+
name: 'react-roi',
|
|
171
|
+
href: 'https://github.com/zakodium-oss/react-roi',
|
|
172
|
+
description: 'the box a region of an image is drawn with.',
|
|
173
|
+
license: 'MIT',
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
id: 'file-collection',
|
|
177
|
+
name: 'file-collection',
|
|
178
|
+
href: 'https://github.com/cheminfo/file-collection',
|
|
179
|
+
description: 'the reader that takes dropped files, folders and archives.',
|
|
180
|
+
license: 'MIT',
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
id: 'zip-js',
|
|
184
|
+
name: 'zip.js',
|
|
185
|
+
href: 'https://github.com/gildas-lormeau/zip.js',
|
|
186
|
+
description: 'the ZIP archives that are read and written in the browser.',
|
|
187
|
+
license: 'BSD-3-Clause',
|
|
188
|
+
},
|
|
168
189
|
{
|
|
169
190
|
id: 'preact-signals',
|
|
170
191
|
name: 'Preact Signals',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credits.js","sourceRoot":"","sources":["../../../src/credits/core/credits.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"credits.js","sourceRoot":"","sources":["../../../src/credits/core/credits.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
import type { ReactElement } from 'react';
|
|
2
|
-
import type { SiteId } from '../core/sites.ts';
|
|
2
|
+
import type { EcosystemSite, SiteId } from '../core/sites.ts';
|
|
3
3
|
/** What a site's written name needs. */
|
|
4
4
|
export interface WordmarkProps {
|
|
5
|
-
/**
|
|
6
|
-
|
|
5
|
+
/**
|
|
6
|
+
* The site whose name is written, passed rather than named — for a site that
|
|
7
|
+
* is deliberately not one of `ECOSYSTEM_SITES`. One of `site` and `siteId` is
|
|
8
|
+
* required.
|
|
9
|
+
* @default undefined
|
|
10
|
+
*/
|
|
11
|
+
site?: EcosystemSite;
|
|
12
|
+
/**
|
|
13
|
+
* The same site, named rather than passed, which is what a header knows.
|
|
14
|
+
* @default undefined
|
|
15
|
+
*/
|
|
16
|
+
siteId?: SiteId;
|
|
7
17
|
/**
|
|
8
18
|
* Size of the name, in pixels. The weight comes from the surrounding
|
|
9
19
|
* context, so the same wordmark suits a header bar and a heading.
|
|
@@ -26,6 +36,7 @@ export interface WordmarkProps {
|
|
|
26
36
|
* its address.
|
|
27
37
|
* @param props - The site, the size of the name, and extra class names.
|
|
28
38
|
* @returns The name, as one inline element that never wraps mid-address.
|
|
39
|
+
* @throws {Error} When neither `site` nor `siteId` is given.
|
|
29
40
|
*/
|
|
30
41
|
export declare function Wordmark(props: WordmarkProps): ReactElement;
|
|
31
42
|
//# sourceMappingURL=Wordmark.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Wordmark.d.ts","sourceRoot":"","sources":["../../../src/ecosystem/ui/Wordmark.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAKzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"Wordmark.d.ts","sourceRoot":"","sources":["../../../src/ecosystem/ui/Wordmark.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAKzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE9D,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,CA4B3D"}
|
|
@@ -11,12 +11,16 @@ import { siteNameColors } from "../core/nameColors.js";
|
|
|
11
11
|
* its address.
|
|
12
12
|
* @param props - The site, the size of the name, and extra class names.
|
|
13
13
|
* @returns The name, as one inline element that never wraps mid-address.
|
|
14
|
+
* @throws {Error} When neither `site` nor `siteId` is given.
|
|
14
15
|
*/
|
|
15
16
|
export function Wordmark(props) {
|
|
16
|
-
const { siteId, size = 17, className } = props;
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
const { site, siteId, size = 17, className } = props;
|
|
18
|
+
const written = site ?? (siteId === undefined ? undefined : siteById(siteId));
|
|
19
|
+
if (written === undefined) {
|
|
20
|
+
throw new Error('Wordmark needs one of its `site` and `siteId` props');
|
|
21
|
+
}
|
|
22
|
+
const { lead, alt, dot } = written.name;
|
|
23
|
+
const colors = siteNameColors(written);
|
|
20
24
|
return (_jsxs("span", { className: joinClassNames('wordmark', className), style: { ...WORDMARK_STYLE, fontSize: size }, children: [_jsx("span", { className: "wordmark__lead", style: { color: colors.lead }, children: lead }), dot ? (_jsx("span", { className: "wordmark__dot", style: { color: colors.dot }, children: "." })) : null, _jsx("span", { className: "wordmark__alt", style: { color: colors.alt }, children: alt })] }));
|
|
21
25
|
}
|
|
22
26
|
const WORDMARK_STYLE = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Wordmark.js","sourceRoot":"","sources":["../../../src/ecosystem/ui/Wordmark.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"Wordmark.js","sourceRoot":"","sources":["../../../src/ecosystem/ui/Wordmark.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AA+BvD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9E,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IACxC,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAEvC,OAAO,CACL,gBACE,SAAS,EAAE,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,EAChD,KAAK,EAAE,EAAE,GAAG,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,aAE5C,eAAM,SAAS,EAAC,gBAAgB,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,YAC3D,IAAI,GACA,EACN,GAAG,CAAC,CAAC,CAAC,CACL,eAAM,SAAS,EAAC,eAAe,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,kBAErD,CACR,CAAC,CAAC,CAAC,IAAI,EACR,eAAM,SAAS,EAAC,eAAe,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,YACzD,GAAG,GACC,IACF,CACR,CAAC;AACJ,CAAC;AAED,MAAM,cAAc,GAAkB;IACpC,aAAa,EAAE,SAAS;IACxB,UAAU,EAAE,QAAQ;CACrB,CAAC"}
|
package/lib/vite.d.ts
CHANGED
package/lib/vite.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC"}
|
package/lib/vite.js
CHANGED
package/lib/vite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-cheminfo",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "React components, hooks and framework-free helpers shared by the cheminfo sites: site chrome, citations, sharing, routing, pedagogy, charts, and the structure, orbital and 3D molecule viewers",
|
|
6
6
|
"author": "Luc Patiny",
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"./styles/*.css"
|
|
16
16
|
],
|
|
17
17
|
"exports": {
|
|
18
|
+
"./build-info": "./lib/build-info.js",
|
|
18
19
|
"./core": "./lib/core.js",
|
|
19
20
|
"./molecule3d": "./lib/molecule3d.js",
|
|
20
21
|
"./orbital": "./lib/orbital.js",
|
package/src/about/core/about.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BuildInfo } from '../../build/core/buildInfo.ts';
|
|
1
2
|
import type { CitedWork } from '../../citation/core/works.ts';
|
|
2
3
|
import type { CreditEntry, CreditId } from '../../credits/core/credits.ts';
|
|
3
4
|
import { credits } from '../../credits/core/credits.ts';
|
|
@@ -17,8 +18,12 @@ import { providers } from './providers.ts';
|
|
|
17
18
|
* each crediting a different half of what it runs on.
|
|
18
19
|
*/
|
|
19
20
|
export interface AboutContent {
|
|
20
|
-
/**
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* The site the page belongs to: its id, or the record itself for a site that
|
|
23
|
+
* is deliberately not listed in the family's Tools menu and therefore not in
|
|
24
|
+
* `ECOSYSTEM_SITES`.
|
|
25
|
+
*/
|
|
26
|
+
siteId: SiteId | EcosystemSite;
|
|
22
27
|
/** One sentence: what this tool is. */
|
|
23
28
|
what: string;
|
|
24
29
|
/**
|
|
@@ -59,10 +64,11 @@ export interface AboutContent {
|
|
|
59
64
|
*/
|
|
60
65
|
repository?: string;
|
|
61
66
|
/**
|
|
62
|
-
*
|
|
63
|
-
*
|
|
67
|
+
* Which build is running, from `virtual:cheminfo-build-info` — never written
|
|
68
|
+
* by hand, which is what keeps it true after the next release.
|
|
69
|
+
* @default undefined — the site's build does not publish one
|
|
64
70
|
*/
|
|
65
|
-
|
|
71
|
+
build?: BuildInfo;
|
|
66
72
|
/**
|
|
67
73
|
* Where a problem is reported.
|
|
68
74
|
* @default the repository's /issues
|
|
@@ -102,8 +108,8 @@ export interface ResolvedAbout {
|
|
|
102
108
|
providedBy: ProviderEntry[];
|
|
103
109
|
license: string;
|
|
104
110
|
repository: string;
|
|
105
|
-
/**
|
|
106
|
-
|
|
111
|
+
/** Which build is running, or `undefined` when the site does not say. */
|
|
112
|
+
build: BuildInfo | undefined;
|
|
107
113
|
issues: string;
|
|
108
114
|
}
|
|
109
115
|
|
|
@@ -116,7 +122,10 @@ export interface ResolvedAbout {
|
|
|
116
122
|
* credits nobody.
|
|
117
123
|
*/
|
|
118
124
|
export function resolveAbout(content: AboutContent): ResolvedAbout {
|
|
119
|
-
const site =
|
|
125
|
+
const site =
|
|
126
|
+
typeof content.siteId === 'string'
|
|
127
|
+
? siteById(content.siteId)
|
|
128
|
+
: content.siteId;
|
|
120
129
|
const repository = content.repository ?? site.repository;
|
|
121
130
|
|
|
122
131
|
return {
|
|
@@ -130,7 +139,7 @@ export function resolveAbout(content: AboutContent): ResolvedAbout {
|
|
|
130
139
|
providedBy: providers(content.providedBy ?? []),
|
|
131
140
|
license: content.license ?? DEFAULT_LICENSE,
|
|
132
141
|
repository,
|
|
133
|
-
|
|
142
|
+
build: content.build,
|
|
134
143
|
issues: content.issues ?? `${withoutTrailingSlash(repository)}/issues`,
|
|
135
144
|
};
|
|
136
145
|
}
|