withastro / compiler

The Astro compiler. Written in Go. Distributed as WASM.
Other
466 stars 56 forks source link

🐛 BUG: Template string type error #934

Open jlarmstrongiv opened 11 months ago

jlarmstrongiv commented 11 months ago

Describe the Bug

After using a template string ending with /, my Astro file lights up like a Christmas tree with errors.

Steps to Reproduce

Use this line in the Astro head between the ---

const url = `${"placeholder"}${"placeholder".replace(`${"placeholder"}/`, "")}/`;

It’s valid typescript

Princesseuh commented 11 months ago

Compiler seems to get confused by all the template literals and can't tell where the frontmatter ends


const url = `${"placeholder"}${"placeholder".replace(`${"placeholder"}/`, "")}/`;
---

export default function __AstroComponent_(_props: Record<string, any>): any {}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPHN0ZGluPiJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLS0tXG5jb25zdCB1cmwgPSBgJHtcInBsYWNlaG9sZGVyXCJ9JHtcInBsYWNlaG9sZGVyXCIucmVwbGFjZShgJHtcInBsYWNlaG9sZGVyXCJ9L2AsIFwiXCIpfS9gO1xuLS0tXG4iXSwKICAibWFwcGluZ3MiOiAiQUFBQSxBQUFHO0FBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakYsQ0FBQyxDQUFDLENBQUM7QUFDSCxBQUFHO0FBQUgsQUFIQTsiLAogICJuYW1lcyI6IFtdCn0=
lifeisfakenews commented 5 months ago

Happens for me to - the function causes it because of the divivdes

function formatDate(date:Date) {
    const MINUTE = 60 * 1000;
    const HOUR = MINUTE * 60;
    const DAY = HOUR * 24;

    const elapsed = new Date().getTime() - date.getTime();
    if (Math.abs(elapsed) < MINUTE) {
        return "Just Now";
    } else if (Math.abs(elapsed) < HOUR) {
        return Math.round(elapsed / MINUTE) + ` minute${Math.round(elapsed / MINUTE) == 1 ? "" : "s"} ago`;
    } else if (Math.abs(elapsed) < DAY ) {
        return Math.round(elapsed / HOUR) + ` hour${Math.round(elapsed / HOUR) == 1 ? "" : "s"} ago`;
    } else if (Math.abs(elapsed) < DAY * 30 && Math.floor(elapsed / DAY) < 7) {
        return Math.round(elapsed / DAY) + ` day${Math.round(elapsed / DAY) == 1 ? "" : "s"} ago`;
    } else {
        return new Intl.DateTimeFormat(Astro.preferredLocale, {month: "short", day: "numeric"}).format(date);
    };
};
<a href={"/" + url}>
    <div class="preview | flex dir-v pos-rel" style={{backgroundImage: `url("${cover}")`}}>
        <span class="slots" aria-label={strings.TournamentCard.slots}>{slots - (teams?.length ?? 0)}/{slots}</span>
        <img class="icon" alt="" src={logo}/>
        <div class="push-down">
            <p class="name">{name}</p>
            {joined_as_team ? 
                <div class="team">
                    <img src={joined_as_team.logo} alt="" />
                    <p>{joined_as_team.name}</p>
                </div>
             : <p class="date">{
                Date.now() < join_by_date.toMillis() ? strings.TournamentCard.join : 
                Date.now() < start_date.toMillis() ? strings.TournamentCard.starts : 
                strings.TournamentCard.started
                }{" "}{Date.now() < join_by_date.toMillis() ? formateDate(join_by_date.toMillis()) : formatDate(start_date.toMillis()) }</p>
            }
        </div>
    </div>
</a>