Skip to content

Available as an ECMAScript module? #616

Open
@SebastianKohler

Description

@SebastianKohler

Hi,

First of all, thank you for a great package!

I'm using this in an Angular 15 project. Angular points out that JSON→URL is a CommonJS module, which can prevent bundlers and minifiers from optimizing my application, which results in a larger bundle size. It recommends not to depend on CommonJS modules and instead use ECMAScript modules.

Any chance of an ECMAScript module of JSON→URL?

Activity

self-assigned this
on Sep 14, 2023
dmaccormack

dmaccormack commented on Sep 15, 2023

@dmaccormack
Collaborator

Hi, @SebastianKohler.

JSON→URL is already available as a module. This test shows a example: https://github.com/jsonurl/jsonurl-js/blob/main/itest/es6-native/main.js#L25.

How are you referencing it?

SebastianKohler

SebastianKohler commented on Sep 15, 2023

@SebastianKohler
Author

Thanks for your reply!

I use it in a service in Angular like this:

import { Injectable } from '@angular/core';
import JsonURL from '@jsonurl/jsonurl';


@Injectable({
  providedIn: 'root',
})
export class UrlService {
    constructor() {}

    parse(text: string, impliedArray: boolean = false): any {
        return JsonURL.parse(text, {
            AQF: true,
            ...(impliedArray && { impliedArray: [] })
        });
    }

    stringify(value: any, impliedArray: boolean = false): string | undefined {
        return JsonURL.stringify(value, {
            AQF: true,
            ...(impliedArray && { impliedArray: true })
        });
    }

}

dmaccormack

dmaccormack commented on Sep 15, 2023

@dmaccormack
Collaborator

Where is the warning message coming from (e.g. the bundler) and what is the exact message you're seeing?

SebastianKohler

SebastianKohler commented on Sep 15, 2023

@SebastianKohler
Author
Warning: C:\Users\sebkoh\Documents\GitHub\digital_edition_web_ng\src\app\services\url.service.ts depends on '@jsonurl/jsonurl'. CommonJS or AMD dependencies can cause optimization bailouts.
For more info see: https://angular.io/guide/build#configuring-commonjs-dependencies

It's the Angular @angular-devkit/build-angular builder that produces the warning. It's displayed every time my Angular app is built.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions

    Available as an ECMAScript module? · Issue #616 · jsonurl/jsonurl-js