nodality 1.0.175 → 1.0.176
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/bin/nodality.js +103 -0
- package/layout/animator.js +1 -1
- package/layout/audio.js +1 -1
- package/layout/audionew.js +1 -1
- package/layout/base-2.js +1 -1
- package/layout/base.js +1 -1
- package/layout/beta-desktop-bar.js +1 -1
- package/layout/beta-mobile-bar.js +1 -1
- package/layout/box.js +1 -1
- package/layout/button.js +1 -1
- package/layout/cards.js +1 -1
- package/layout/center.js +1 -1
- package/layout/checkbox.js +1 -1
- package/layout/circle.js +1 -1
- package/layout/clean-row.js +1 -1
- package/layout/code.js +1 -1
- package/layout/container.js +1 -1
- package/layout/custom.js +1 -1
- package/layout/div-image.js +1 -1
- package/layout/dropdown-2025.js +1 -1
- package/layout/dropdown.js +1 -1
- package/layout/empty-element.js +1 -1
- package/layout/external-stylesheet.js +1 -1
- package/layout/flex-card.js +1 -1
- package/layout/flex-grid.js +1 -1
- package/layout/flex-row.js +1 -1
- package/layout/footer.js +1 -1
- package/layout/form-components/custom.js +1 -1
- package/layout/form-components/data-list.js +1 -1
- package/layout/form-components/floating-input.js +1 -1
- package/layout/form-components/form-all.js +1 -1
- package/layout/form-components/form.js +1 -1
- package/layout/form-components/image-picker.js +1 -1
- package/layout/form-components/picker.js +1 -1
- package/layout/form-components/radio.js +1 -1
- package/layout/form-components/radiogroup.js +1 -1
- package/layout/form-components/range.js +1 -1
- package/layout/free.js +1 -1
- package/layout/grid-new.js +1 -1
- package/layout/grid-switcher.js +1 -1
- package/layout/grid.js +1 -1
- package/layout/group.js +1 -1
- package/layout/header.js +1 -1
- package/layout/horizontal-scroller.js +1 -1
- package/layout/image-old.js +1 -1
- package/layout/image.js +1 -1
- package/layout/index.js +1 -1
- package/layout/label.js +1 -1
- package/layout/link.js +1 -1
- package/layout/list-OLD.js +1 -1
- package/layout/list.js +1 -1
- package/layout/meta-adder.js +1 -1
- package/layout/modal-2025.js +1 -1
- package/layout/modernwrap.js +1 -1
- package/layout/multiswitcher.js +1 -1
- package/layout/multiswitcherBeta.js +1 -1
- package/layout/nav-bar.js +1 -1
- package/layout/nav-factor/custom-div.js +1 -1
- package/layout/navBar-OLD.js +1 -1
- package/layout/new-flat-adder.js +1 -1
- package/layout/new-nav-bar.js +1 -1
- package/layout/offset-container.js +1 -1
- package/layout/polygon.js +1 -1
- package/layout/prerender-site.js +1 -1
- package/layout/prerender.js +1 -1
- package/layout/progress.js +1 -1
- package/layout/row.js +1 -1
- package/layout/saved-new-nav-bar.js +1 -1
- package/layout/scroll-video.js +1 -1
- package/layout/side-bar.js +1 -1
- package/layout/side-nav-bar.js +1 -1
- package/layout/simple-bar.js +1 -1
- package/layout/slider-2025.js +1 -1
- package/layout/spacer.js +1 -1
- package/layout/stack.js +1 -1
- package/layout/styler.js +1 -1
- package/layout/svg.js +1 -1
- package/layout/switcher.js +1 -1
- package/layout/table.js +1 -1
- package/layout/text-field.js +1 -1
- package/layout/text.js +1 -1
- package/layout/ulist.js +1 -1
- package/layout/video.js +1 -1
- package/layout/without-new.js +1 -1
- package/layout/wrap.js +1 -1
- package/layout/zoom-card.js +1 -1
- package/lib/card-getter.js +1 -1
- package/lib/data.js +1 -1
- package/lib/designer.js +1 -1
- package/lib/element-mapper.js +1 -1
- package/lib/keyframe-animation.js +1 -1
- package/lib/link-getter.js +1 -1
- package/lib/scroll-video.js +1 -1
- package/lib/seo.js +1 -1
- package/lib/stacker.js +1 -1
- package/lib/theme.js +1 -1
- package/lib/transform-anim.js +1 -1
- package/package.json +1 -1
package/bin/nodality.js
CHANGED
|
@@ -43,6 +43,11 @@ function showUsage() {
|
|
|
43
43
|
nodality fanout # Generate per-item pages from JSON (reads
|
|
44
44
|
# the \`fanout\` block in nodality.config.json;
|
|
45
45
|
# runs automatically before \`prerender\`)
|
|
46
|
+
nodality stage [--upload=DIR] # Copy the installed ESM bundle to
|
|
47
|
+
# upload/dist/lib.bundle.js + stamp the
|
|
48
|
+
# version into upload/_nodality-version.js.
|
|
49
|
+
# Run from consumer upgrade.sh after
|
|
50
|
+
# \`npm install nodality@latest\`.
|
|
46
51
|
nodality help
|
|
47
52
|
|
|
48
53
|
Compile flags:
|
|
@@ -788,12 +793,110 @@ async function main() {
|
|
|
788
793
|
await runCompile(rest);
|
|
789
794
|
} else if (command === "fanout") {
|
|
790
795
|
await runFanoutStandalone(rest);
|
|
796
|
+
} else if (command === "stage") {
|
|
797
|
+
await runStage(rest);
|
|
791
798
|
} else {
|
|
792
799
|
console.error(`[nodality] Unknown command: ${command}`);
|
|
793
800
|
showUsage();
|
|
794
801
|
}
|
|
795
802
|
}
|
|
796
803
|
|
|
804
|
+
// ─── stage subcommand ────────────────────────────────────────────
|
|
805
|
+
//
|
|
806
|
+
// One-liner that consumer `upgrade.sh` scripts can call instead of
|
|
807
|
+
// hand-rolling:
|
|
808
|
+
//
|
|
809
|
+
// cp node_modules/nodality/dist/index.esm.js upload/dist/lib.bundle.js
|
|
810
|
+
// node -e "stamp version into upload/_nodality-version.js"
|
|
811
|
+
//
|
|
812
|
+
// Both bits of bookkeeping run in EVERY consumer's upgrade flow and
|
|
813
|
+
// were duplicated nearly verbatim across h7-nodality, sls3-2025 and
|
|
814
|
+
// sls3-2026. Now a single `nodality stage` covers them — future
|
|
815
|
+
// consumers get it for free, and version drift across copies is
|
|
816
|
+
// impossible.
|
|
817
|
+
//
|
|
818
|
+
// Flags:
|
|
819
|
+
// --upload=<dir> consumer's upload/ directory (default ./upload)
|
|
820
|
+
// --no-bundle skip the dist/lib.bundle.js copy (some
|
|
821
|
+
// consumers don't ship the browser ESM)
|
|
822
|
+
// --no-version skip _nodality-version.js stamping
|
|
823
|
+
//
|
|
824
|
+
// Idempotent: writes only when content changes. Safe to re-run.
|
|
825
|
+
async function runStage(args) {
|
|
826
|
+
const flags = parseFlags(args);
|
|
827
|
+
const cwd = process.cwd();
|
|
828
|
+
const uploadDir = path.resolve(cwd, flags.upload ?? "./upload");
|
|
829
|
+
|
|
830
|
+
if (!fs.existsSync(uploadDir)) {
|
|
831
|
+
console.error(`[nodality] stage: upload dir not found: ${uploadDir}`);
|
|
832
|
+
process.exit(1);
|
|
833
|
+
}
|
|
834
|
+
|
|
835
|
+
// Locate the installed nodality so we copy from the same version
|
|
836
|
+
// the consumer's `npm install` just landed. Walks up from `cwd`
|
|
837
|
+
// looking for node_modules/nodality.
|
|
838
|
+
let pkgRoot = null;
|
|
839
|
+
let cursor = cwd;
|
|
840
|
+
while (cursor !== path.dirname(cursor)) {
|
|
841
|
+
const candidate = path.join(cursor, "node_modules", "nodality");
|
|
842
|
+
if (fs.existsSync(candidate)) {
|
|
843
|
+
pkgRoot = candidate;
|
|
844
|
+
break;
|
|
845
|
+
}
|
|
846
|
+
cursor = path.dirname(cursor);
|
|
847
|
+
}
|
|
848
|
+
if (!pkgRoot) {
|
|
849
|
+
console.error(`[nodality] stage: could not locate node_modules/nodality from ${cwd}`);
|
|
850
|
+
process.exit(1);
|
|
851
|
+
}
|
|
852
|
+
|
|
853
|
+
const pkg = JSON.parse(
|
|
854
|
+
fs.readFileSync(path.join(pkgRoot, "package.json"), "utf8"),
|
|
855
|
+
);
|
|
856
|
+
const version = pkg.version;
|
|
857
|
+
|
|
858
|
+
// 1. Bundle copy — `upload/dist/lib.bundle.js` is what the consumer's
|
|
859
|
+
// HTML importmap pins `"nodality"` to. Keep it in lockstep with
|
|
860
|
+
// the installed package's ESM build.
|
|
861
|
+
if (flags["no-bundle"] !== true) {
|
|
862
|
+
const src = path.join(pkgRoot, "dist", "index.esm.js");
|
|
863
|
+
const dst = path.join(uploadDir, "dist", "lib.bundle.js");
|
|
864
|
+
if (!fs.existsSync(src)) {
|
|
865
|
+
console.warn(`[nodality] stage: ${src} missing — skipping bundle copy`);
|
|
866
|
+
} else {
|
|
867
|
+
fs.mkdirSync(path.dirname(dst), { recursive: true });
|
|
868
|
+
fs.copyFileSync(src, dst);
|
|
869
|
+
console.log(`[nodality] stage: bundle → ${path.relative(cwd, dst)}`);
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
// 2. Version stamp — surfaced in consumer footers ("nodality vX.Y.Z")
|
|
874
|
+
// so a deployed page proves which engine version it was built
|
|
875
|
+
// against. Idempotent: only writes if the version actually
|
|
876
|
+
// changed, so re-running doesn't churn the file's mtime.
|
|
877
|
+
if (flags["no-version"] !== true) {
|
|
878
|
+
const stampPath = path.join(uploadDir, "_nodality-version.js");
|
|
879
|
+
const body =
|
|
880
|
+
`// Auto-generated by \`nodality stage\` — do not hand-edit.\n` +
|
|
881
|
+
`// Reflects the version of the \`nodality\` package currently\n` +
|
|
882
|
+
`// installed in node_modules/, so the footer can display a\n` +
|
|
883
|
+
`// tiny build tag without bundling node_modules into the\n` +
|
|
884
|
+
`// static site.\n` +
|
|
885
|
+
`export const NODALITY_VERSION = "${version}";\n`;
|
|
886
|
+
let needsWrite = true;
|
|
887
|
+
if (fs.existsSync(stampPath)) {
|
|
888
|
+
const existing = fs.readFileSync(stampPath, "utf8");
|
|
889
|
+
needsWrite = existing !== body;
|
|
890
|
+
}
|
|
891
|
+
if (needsWrite) {
|
|
892
|
+
fs.writeFileSync(stampPath, body);
|
|
893
|
+
console.log(`[nodality] stage: version ${version} → ${path.relative(cwd, stampPath)}`);
|
|
894
|
+
} else {
|
|
895
|
+
console.log(`[nodality] stage: version already at ${version} (no change)`);
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
|
|
797
900
|
main().catch((err) => {
|
|
798
901
|
console.error(`[nodality] ${err?.message ?? err}`);
|
|
799
902
|
process.exit(1);
|
package/layout/animator.js
CHANGED
package/layout/audio.js
CHANGED
package/layout/audionew.js
CHANGED
package/layout/base-2.js
CHANGED
package/layout/base.js
CHANGED
package/layout/box.js
CHANGED
package/layout/button.js
CHANGED
package/layout/cards.js
CHANGED
package/layout/center.js
CHANGED
package/layout/checkbox.js
CHANGED
package/layout/circle.js
CHANGED
package/layout/clean-row.js
CHANGED
package/layout/code.js
CHANGED
package/layout/container.js
CHANGED
package/layout/custom.js
CHANGED
package/layout/div-image.js
CHANGED
package/layout/dropdown-2025.js
CHANGED
package/layout/dropdown.js
CHANGED
package/layout/empty-element.js
CHANGED
package/layout/flex-card.js
CHANGED
package/layout/flex-grid.js
CHANGED
package/layout/flex-row.js
CHANGED
package/layout/footer.js
CHANGED
package/layout/free.js
CHANGED
package/layout/grid-new.js
CHANGED
package/layout/grid-switcher.js
CHANGED
package/layout/grid.js
CHANGED
package/layout/group.js
CHANGED
package/layout/header.js
CHANGED
package/layout/image-old.js
CHANGED
package/layout/image.js
CHANGED
package/layout/index.js
CHANGED
package/layout/label.js
CHANGED
package/layout/link.js
CHANGED
package/layout/list-OLD.js
CHANGED
package/layout/list.js
CHANGED
package/layout/meta-adder.js
CHANGED
package/layout/modal-2025.js
CHANGED
package/layout/modernwrap.js
CHANGED
package/layout/multiswitcher.js
CHANGED
package/layout/nav-bar.js
CHANGED
package/layout/navBar-OLD.js
CHANGED
package/layout/new-flat-adder.js
CHANGED
package/layout/new-nav-bar.js
CHANGED
package/layout/polygon.js
CHANGED
package/layout/prerender-site.js
CHANGED
package/layout/prerender.js
CHANGED
package/layout/progress.js
CHANGED
package/layout/row.js
CHANGED
package/layout/scroll-video.js
CHANGED
package/layout/side-bar.js
CHANGED
package/layout/side-nav-bar.js
CHANGED
package/layout/simple-bar.js
CHANGED
package/layout/slider-2025.js
CHANGED
package/layout/spacer.js
CHANGED
package/layout/stack.js
CHANGED
package/layout/styler.js
CHANGED
package/layout/svg.js
CHANGED
package/layout/switcher.js
CHANGED
package/layout/table.js
CHANGED
package/layout/text-field.js
CHANGED
package/layout/text.js
CHANGED
package/layout/ulist.js
CHANGED
package/layout/video.js
CHANGED
package/layout/without-new.js
CHANGED
package/layout/wrap.js
CHANGED
package/layout/zoom-card.js
CHANGED
package/lib/card-getter.js
CHANGED
package/lib/data.js
CHANGED
package/lib/designer.js
CHANGED
package/lib/element-mapper.js
CHANGED
package/lib/link-getter.js
CHANGED
package/lib/scroll-video.js
CHANGED
package/lib/seo.js
CHANGED
package/lib/stacker.js
CHANGED
package/lib/theme.js
CHANGED
package/lib/transform-anim.js
CHANGED