jsonurl-js icon indicating copy to clipboard operation
jsonurl-js copied to clipboard

Available as an ECMAScript module?

Open SebastianKohler opened this issue 2 years ago • 4 comments

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?

SebastianKohler avatar May 31 '23 04:05 SebastianKohler

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?

dmaccormack avatar Sep 15 '23 12:09 dmaccormack

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 })
        });
    }

}

SebastianKohler avatar Sep 15 '23 12:09 SebastianKohler

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

dmaccormack avatar Sep 15 '23 12:09 dmaccormack

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.

SebastianKohler avatar Sep 15 '23 12:09 SebastianKohler