create-astrale-domain 0.2.1 → 0.2.2
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/dist/index.js +93 -27
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -780,7 +780,7 @@ import { existsSync as existsSync2 } from "node:fs";
|
|
|
780
780
|
import { delimiter, join as join2, relative as relative2, resolve as resolve2 } from "node:path";
|
|
781
781
|
|
|
782
782
|
// src/scaffold.ts
|
|
783
|
-
import { existsSync } from "node:fs";
|
|
783
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
784
784
|
import { cp, readFile, rm, writeFile } from "node:fs/promises";
|
|
785
785
|
import { createRequire } from "node:module";
|
|
786
786
|
import { dirname, isAbsolute, join, relative, resolve } from "node:path";
|
|
@@ -804,7 +804,43 @@ var ADAPTER_PACKAGES = {
|
|
|
804
804
|
astrale: "@astrale-os/adapter-astrale",
|
|
805
805
|
cloudflare: "@astrale-os/adapter-cloudflare"
|
|
806
806
|
};
|
|
807
|
-
|
|
807
|
+
function packageJson(pkgName) {
|
|
808
|
+
const rel = LINK_TARGETS[pkgName];
|
|
809
|
+
if (rel) {
|
|
810
|
+
const local = join(WORKSPACE_ROOT, rel, "package.json");
|
|
811
|
+
if (existsSync(local)) return JSON.parse(readFileSync(local, "utf-8"));
|
|
812
|
+
}
|
|
813
|
+
const direct = tryPackageJson(require2, pkgName);
|
|
814
|
+
if (direct) return direct;
|
|
815
|
+
for (const owner of /* @__PURE__ */ new Set([BODY_PACKAGE, ...Object.values(ADAPTER_PACKAGES)])) {
|
|
816
|
+
const ownerPkgPath = tryResolve(`${owner}/package.json`);
|
|
817
|
+
if (!ownerPkgPath) continue;
|
|
818
|
+
const ownerRequire = createRequire(ownerPkgPath);
|
|
819
|
+
const nested = tryPackageJson(ownerRequire, pkgName);
|
|
820
|
+
if (nested) return nested;
|
|
821
|
+
}
|
|
822
|
+
throw new Error(`Could not read ${pkgName} package.json.`);
|
|
823
|
+
}
|
|
824
|
+
function tryResolve(id) {
|
|
825
|
+
try {
|
|
826
|
+
return require2.resolve(id);
|
|
827
|
+
} catch {
|
|
828
|
+
return void 0;
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
function tryPackageJson(req, pkgName) {
|
|
832
|
+
try {
|
|
833
|
+
return req(`${pkgName}/package.json`);
|
|
834
|
+
} catch {
|
|
835
|
+
return void 0;
|
|
836
|
+
}
|
|
837
|
+
}
|
|
838
|
+
function publishedDepVersion(pkgName) {
|
|
839
|
+
const pkg = packageJson(pkgName);
|
|
840
|
+
const version = pkg.version;
|
|
841
|
+
if (!version) throw new Error(`Could not read ${pkgName} package version.`);
|
|
842
|
+
return version;
|
|
843
|
+
}
|
|
808
844
|
function templateDir(pkg) {
|
|
809
845
|
return join(dirname(require2.resolve(`${pkg}/package.json`)), "template");
|
|
810
846
|
}
|
|
@@ -819,14 +855,15 @@ async function scaffold(opts) {
|
|
|
819
855
|
}
|
|
820
856
|
await cp(src, opts.dir, {
|
|
821
857
|
recursive: true,
|
|
822
|
-
filter: (s) => !/\/(node_modules|\.astrale|dist-client|\.wrangler|pnpm-lock\.yaml)(\/|$)/.test(
|
|
858
|
+
filter: (s) => !/\/(node_modules|\.astrale|dist-client|\.wrangler|pnpm-lock\.yaml|\.DS_Store)(\/|$)/.test(
|
|
823
859
|
`/${relative(src, s)}`
|
|
824
860
|
)
|
|
825
861
|
});
|
|
826
862
|
await materializeAdapter(opts);
|
|
827
863
|
await stampOrigin(opts.dir, opts.origin);
|
|
828
864
|
await rewritePackageJson(opts.dir, opts.name, opts.link);
|
|
829
|
-
|
|
865
|
+
await rewriteWorkspaceMember(join(opts.dir, "client", "package.json"), opts.link);
|
|
866
|
+
if (!opts.link) await writeReleaseAgePolicy(opts.dir);
|
|
830
867
|
await writeFile(
|
|
831
868
|
join(opts.dir, ".env.dev"),
|
|
832
869
|
"# Dev secrets \u2014 the ENTIRE file is injected into the local runtime by `pnpm dev`.\n# Gitignored. See .env.example.\n"
|
|
@@ -860,37 +897,24 @@ async function setAdapterDep(dir, from, to) {
|
|
|
860
897
|
const pkg = JSON.parse(await readFile(path, "utf-8"));
|
|
861
898
|
if (!pkg.dependencies || !(from in pkg.dependencies)) return;
|
|
862
899
|
delete pkg.dependencies[from];
|
|
863
|
-
pkg.dependencies[to] =
|
|
900
|
+
pkg.dependencies[to] = publishedDepVersion(to);
|
|
864
901
|
pkg.dependencies = Object.fromEntries(
|
|
865
902
|
Object.entries(pkg.dependencies).sort(([a], [b3]) => a.localeCompare(b3))
|
|
866
903
|
);
|
|
867
904
|
await writeFile(path, JSON.stringify(pkg, null, 2) + "\n");
|
|
868
905
|
}
|
|
869
|
-
async function
|
|
906
|
+
async function rewriteWorkspaceMember(pkgPath, link) {
|
|
870
907
|
if (!existsSync(pkgPath)) return;
|
|
871
908
|
const pkg = JSON.parse(await readFile(pkgPath, "utf-8"));
|
|
872
|
-
|
|
873
|
-
for (const group of [pkg.dependencies, pkg.devDependencies]) {
|
|
874
|
-
if (!group) continue;
|
|
875
|
-
for (const [dep, rel] of Object.entries(LINK_TARGETS)) {
|
|
876
|
-
if (dep in group) {
|
|
877
|
-
group[dep] = `link:${join(WORKSPACE_ROOT, rel)}`;
|
|
878
|
-
changed = true;
|
|
879
|
-
}
|
|
880
|
-
}
|
|
881
|
-
}
|
|
909
|
+
const changed = rewriteAstraleDeps(pkg, link);
|
|
882
910
|
if (changed) await writeFile(pkgPath, JSON.stringify(pkg, null, 2) + "\n");
|
|
883
911
|
}
|
|
884
912
|
async function rewritePackageJson(dir, name, link) {
|
|
885
913
|
const path = join(dir, "package.json");
|
|
886
914
|
const pkg = JSON.parse(await readFile(path, "utf-8"));
|
|
887
915
|
pkg.name = name;
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
if (dep in pkg.dependencies) {
|
|
891
|
-
pkg.dependencies[dep] = `link:${join(WORKSPACE_ROOT, rel)}`;
|
|
892
|
-
}
|
|
893
|
-
}
|
|
916
|
+
rewriteAstraleDeps(pkg, link);
|
|
917
|
+
if (link) {
|
|
894
918
|
pkg.pnpm = {
|
|
895
919
|
...pkg.pnpm,
|
|
896
920
|
overrides: {
|
|
@@ -901,6 +925,50 @@ async function rewritePackageJson(dir, name, link) {
|
|
|
901
925
|
}
|
|
902
926
|
await writeFile(path, JSON.stringify(pkg, null, 2) + "\n");
|
|
903
927
|
}
|
|
928
|
+
function rewriteAstraleDeps(pkg, link) {
|
|
929
|
+
let changed = false;
|
|
930
|
+
for (const group of [pkg.dependencies, pkg.devDependencies]) {
|
|
931
|
+
if (!group) continue;
|
|
932
|
+
for (const dep of Object.keys(group)) {
|
|
933
|
+
if (!dep.startsWith("@astrale-os/")) continue;
|
|
934
|
+
const next = link && LINK_TARGETS[dep] ? `link:${join(WORKSPACE_ROOT, LINK_TARGETS[dep])}` : publishedDepVersion(dep);
|
|
935
|
+
if (group[dep] !== next) {
|
|
936
|
+
group[dep] = next;
|
|
937
|
+
changed = true;
|
|
938
|
+
}
|
|
939
|
+
}
|
|
940
|
+
}
|
|
941
|
+
return changed;
|
|
942
|
+
}
|
|
943
|
+
async function writeReleaseAgePolicy(dir) {
|
|
944
|
+
const workspace = join(dir, "pnpm-workspace.yaml");
|
|
945
|
+
if (!existsSync(workspace)) return;
|
|
946
|
+
const names = /* @__PURE__ */ new Set();
|
|
947
|
+
for (const pkgPath of [join(dir, "package.json"), join(dir, "client", "package.json")]) {
|
|
948
|
+
if (!existsSync(pkgPath)) continue;
|
|
949
|
+
const pkg = JSON.parse(await readFile(pkgPath, "utf-8"));
|
|
950
|
+
for (const group of [pkg.dependencies, pkg.devDependencies]) {
|
|
951
|
+
for (const [name, spec] of Object.entries(group ?? {})) {
|
|
952
|
+
if (name.startsWith("@astrale-os/") && !spec.startsWith("link:")) names.add(name);
|
|
953
|
+
}
|
|
954
|
+
}
|
|
955
|
+
}
|
|
956
|
+
if (names.size === 0) return;
|
|
957
|
+
const start = "# create-astrale-domain: exact first-party deps";
|
|
958
|
+
const end = "# /create-astrale-domain";
|
|
959
|
+
const block = `
|
|
960
|
+
${start}
|
|
961
|
+
minimumReleaseAgeExclude:
|
|
962
|
+
` + [...names].sort().map((name) => ` - '${name}'`).join("\n") + `
|
|
963
|
+
${end}
|
|
964
|
+
`;
|
|
965
|
+
const text = await readFile(workspace, "utf-8");
|
|
966
|
+
const pattern = new RegExp(`\\n?${escapeRegExp(start)}[\\s\\S]*?${escapeRegExp(end)}\\n?`);
|
|
967
|
+
await writeFile(workspace, text.replace(pattern, "\n").trimEnd() + block);
|
|
968
|
+
}
|
|
969
|
+
function escapeRegExp(value) {
|
|
970
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
971
|
+
}
|
|
904
972
|
function sdkZodVersion() {
|
|
905
973
|
const sdkRequire = createRequire(join(WORKSPACE_ROOT, "sdk", "package.json"));
|
|
906
974
|
const pkg = sdkRequire("zod/package.json");
|
|
@@ -975,12 +1043,11 @@ export const methods: SchemaMethodsImpl<typeof schema, Deps> = { class: {} }
|
|
|
975
1043
|
await rm(join(dir, "integrations"), { recursive: true, force: true });
|
|
976
1044
|
await rm(join(dir, "views", "welcome.ts"), { force: true });
|
|
977
1045
|
await rm(join(dir, "views", "status-page.ts"), { force: true });
|
|
978
|
-
await rm(join(dir, "runtime", "
|
|
979
|
-
await rm(join(dir, "runtime", "status-page"), { recursive: true, force: true });
|
|
1046
|
+
await rm(join(dir, "runtime", "monitoring"), { recursive: true, force: true });
|
|
980
1047
|
await rm(join(dir, "runtime", "shared.ts"), { force: true });
|
|
981
1048
|
await replaceInFile(
|
|
982
1049
|
join(dir, "domain.ts"),
|
|
983
|
-
/\n\
|
|
1050
|
+
/\n(?:[^\S\n]*\/\/[^\n]*\n)*[^\S\n]*postInstall: functions\.seed,/,
|
|
984
1051
|
""
|
|
985
1052
|
);
|
|
986
1053
|
}
|
|
@@ -1167,8 +1234,7 @@ async function main() {
|
|
|
1167
1234
|
);
|
|
1168
1235
|
}
|
|
1169
1236
|
M2.info(
|
|
1170
|
-
|
|
1171
|
-
Agent rooted at a parent workspace? Register the skills there: npx skills add ${cdTarget === dir ? dir : `./${cdTarget}`}/.agents/skills -y`
|
|
1237
|
+
"AI agent on this project? Install the authoring + ops skills once (user-level):\n npx skills add astrale-os/cli -g # or run `astrale setup`"
|
|
1172
1238
|
);
|
|
1173
1239
|
Se(`\u2713 ${slug} ready`);
|
|
1174
1240
|
return 0;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-astrale-domain",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Scaffold a standalone Astrale domain — npm create astrale-domain",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"astrale",
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
"type": "module",
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@clack/prompts": "^0.11.0",
|
|
22
|
-
"@astrale-os/adapter-
|
|
23
|
-
"@astrale-os/adapter-
|
|
22
|
+
"@astrale-os/adapter-astrale": "^0.3.0",
|
|
23
|
+
"@astrale-os/adapter-cloudflare": "^0.3.1"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@astrale-os/ox": ">=0.1.0 <1.0.0",
|