Skip to content

Commit

Permalink
refactor: move library to typescript
Browse files Browse the repository at this point in the history
  • Loading branch information
juanjoDiaz committed Apr 9, 2023
1 parent 2d827e9 commit f9962b6
Show file tree
Hide file tree
Showing 92 changed files with 1,541 additions and 768 deletions.
16 changes: 6 additions & 10 deletions .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,14 @@
"env": {
"es6": true
},
"parser": "@babel/eslint-parser",
"parserOptions": {
"requireConfigFile": false,
"babelOptions": {
"plugins": [
"@babel/plugin-syntax-import-assertions"
]
}
},
"plugins": ["prettier"],
"parser": "@typescript-eslint/parser",
"plugins": [
"@typescript-eslint",
"prettier"
],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"prettier",
"plugin:prettier/recommended"
],
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/on-push.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
restore-keys: |
${{ runner.os }}-node-
- name: Install dependencies
run: npm ci
run: npm ci --workspaces --include-workspace-root
- name: Linting
run: npm run lint
- name: Unit tests
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ published
_docpress
.vscode

packages/*/bin
packages/*/dist
packages/test-helpers/fixtures/results
packages/test-performance/flamegraphs/results
2 changes: 1 addition & 1 deletion build-cdn.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ const replaceDependenciesByJsdelivr = {
const pkgs = ['plainjs', 'whatwg', 'transforms', 'formatters'];

pkgs.forEach(async (pkg) => {
const entryPoints = await glob(`packages/${pkg}/src/*`);
const entryPoints = await glob(`packages/${pkg}/src/*.ts`);
esbuild.build({
entryPoints,
bundle: true,
Expand Down
25 changes: 2 additions & 23 deletions build-cjs.js
Original file line number Diff line number Diff line change
@@ -1,29 +1,8 @@

import path from 'path';
import { writeFile, rename, unlink } from 'fs/promises';
import esbuild from 'esbuild';
import glob from 'tiny-glob';
import { writeFile } from 'fs/promises';

const pkgFolder = path.resolve();
const distFolder = path.join(pkgFolder, 'dist/cjs/');
console.log(pkgFolder, distFolder)
const pkgJson = path.join(pkgFolder, 'package.json');
const tempPkgJson = path.join(pkgFolder, 'package.json.orig');
console.log(pkgFolder, distFolder)
await rename(pkgJson, tempPkgJson);
await writeFile(pkgJson, JSON.stringify({ type: "commonjs" }, null, ' '));
const entryPoints = await glob(`${pkgFolder}/src/*`);
await esbuild.build({
entryPoints,
bundle: false,
platform: 'node',
format: 'cjs',
outdir: distFolder,
});
await unlink(pkgJson);
await rename(tempPkgJson, pkgJson);

await writeFile(path.join(distFolder, 'package.json'), JSON.stringify({ type: "commonjs" }, null, ' '));



await writeFile(path.join(distFolder, 'package.json'), JSON.stringify({ type: "commonjs" }, null, ' '));
Empty file.
2 changes: 1 addition & 1 deletion dist/cdn/formatters/default.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// packages/formatters/src/default.js
// packages/formatters/src/default.ts
function defaultFormatter(value) {
if (value === null || value === void 0)
return "";
Expand Down
38 changes: 23 additions & 15 deletions dist/cdn/formatters/index.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,25 @@
// packages/formatters/src/index.js
import { default as default2 } from "./default.js";
import { default as default3 } from "./number.js";
import { default as default4 } from "./string.js";
import { default as default5 } from "./stringQuoteOnlyIfNecessary.js";
import { default as default6 } from "./stringExcel.js";
import { default as default7 } from "./symbol.js";
import { default as default8 } from "./object.js";
// packages/formatters/src/index.ts
import { default as default2 } from "./Formatter.js";
import { default as default3 } from "./default.js";
import { default as default4, NumberFormatterOptions } from "./number.js";
import { default as default5, StringFormatterOptions } from "./string.js";
import {
default as default6,
StringFQuoteOnlyIfNecesaryFormatterOptions
} from "./stringQuoteOnlyIfNecessary.js";
import { default as default7 } from "./stringExcel.js";
import { default as default8 } from "./symbol.js";
import { default as default9 } from "./object.js";
export {
default2 as default,
default3 as number,
default8 as object,
default4 as string,
default6 as stringExcel,
default5 as stringQuoteOnlyIfNecessary,
default7 as symbol
default2 as Formatter,
NumberFormatterOptions,
StringFQuoteOnlyIfNecesaryFormatterOptions,
StringFormatterOptions,
default3 as default,
default4 as number,
default9 as object,
default5 as string,
default7 as stringExcel,
default6 as stringQuoteOnlyIfNecessary,
default8 as symbol
};
15 changes: 8 additions & 7 deletions dist/cdn/formatters/number.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
// packages/formatters/src/number.js
// packages/formatters/src/number.ts
function numberFormatter(opts = {}) {
if (opts.separator) {
if (opts.decimals) {
return (value) => value.toFixed(opts.decimals).replace(".", opts.separator);
const { separator, decimals } = opts;
if (separator) {
if (decimals) {
return (value) => value.toFixed(decimals).replace(".", separator);
}
return (value) => `${value}`.replace(".", opts.separator);
return (value) => `${value}`.replace(".", separator);
}
if (opts.decimals) {
return (value) => value.toFixed(opts.decimals);
if (decimals) {
return (value) => value.toFixed(decimals);
}
return (value) => `${value}`;
}
Expand Down
12 changes: 6 additions & 6 deletions dist/cdn/formatters/object.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
// packages/formatters/src/object.js
// packages/formatters/src/object.ts
import defaulStringFormatter from "./string.js";
function objectFormatter(opts = { stringFormatter: defaulStringFormatter() }) {
return (value) => {
if (value === null)
return "";
value = JSON.stringify(value);
if (value === void 0)
let stringifiedValue = JSON.stringify(value);
if (stringifiedValue === void 0)
return "";
if (value[0] === '"')
value = value.replace(/^"(.+)"$/, "$1");
return opts.stringFormatter(value);
if (stringifiedValue[0] === '"')
stringifiedValue = stringifiedValue.replace(/^"(.+)"$/, "$1");
return opts.stringFormatter(stringifiedValue);
};
}
export {
Expand Down
2 changes: 1 addition & 1 deletion dist/cdn/formatters/string.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// packages/formatters/src/string.js
// packages/formatters/src/string.ts
function stringFormatter(opts = {}) {
const quote = typeof opts.quote === "string" ? opts.quote : '"';
const escapedQuote = typeof opts.escapedQuote === "string" ? opts.escapedQuote : `${quote}${quote}`;
Expand Down
2 changes: 1 addition & 1 deletion dist/cdn/formatters/stringExcel.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// packages/formatters/src/stringExcel.js
// packages/formatters/src/stringExcel.ts
var quote = '"';
var escapedQuote = '""""';
function stringExcel(value) {
Expand Down
2 changes: 1 addition & 1 deletion dist/cdn/formatters/stringQuoteOnlyIfNecessary.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// packages/formatters/src/stringQuoteOnlyIfNecessary.js
// packages/formatters/src/stringQuoteOnlyIfNecessary.ts
import defaulStringFormatter from "./string.js";
function stringQuoteOnlyIfNecessaryFormatter(opts = {}) {
const quote = typeof opts.quote === "string" ? opts.quote : '"';
Expand Down
2 changes: 1 addition & 1 deletion dist/cdn/formatters/symbol.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// packages/formatters/src/symbol.js
// packages/formatters/src/symbol.ts
import defaulStringFormatter from "./string.js";
function symbolFormatter(opts = { stringFormatter: defaulStringFormatter() }) {
return (value) => opts.stringFormatter(value.toString().slice(7, -1));
Expand Down
53 changes: 43 additions & 10 deletions dist/cdn/plainjs/BaseParser.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,40 @@
// packages/plainjs/src/BaseParser.js
var __defProp = Object.defineProperty;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b ||= {})
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};

// packages/plainjs/src/BaseParser.ts
import lodashGet from "https://cdn.jsdelivr.net/gh/lodash/lodash@master/get.js";
import defaultFormatter from "../formatters/default.js";
import numberFormatterCtor from "../formatters/number.js";
import stringFormatterCtor from "../formatters/string.js";
import symbolFormatterCtor from "../formatters/symbol.js";
import objectFormatterCtor from "../formatters/object.js";
import { getProp, flattenReducer, fastJoin } from "./utils.js";
var FormatterTypes = /* @__PURE__ */ ((FormatterTypes2) => {
FormatterTypes2["header"] = "header";
FormatterTypes2["undefined"] = "undefined";
FormatterTypes2["boolean"] = "boolean";
FormatterTypes2["number"] = "number";
FormatterTypes2["bigint"] = "bigint";
FormatterTypes2["string"] = "string";
FormatterTypes2["symbol"] = "symbol";
FormatterTypes2["function"] = "function";
FormatterTypes2["object"] = "object";
return FormatterTypes2;
})(FormatterTypes || {});
var JSON2CSVBase = class {
constructor(opts) {
this.opts = this.preprocessOpts(opts);
Expand All @@ -17,7 +46,10 @@ var JSON2CSVBase = class {
* delimiter, default value, quote mark, header, etc.
*/
preprocessOpts(opts) {
const processedOpts = Object.assign({}, opts);
const processedOpts = Object.assign(
{},
opts
);
if (processedOpts.fields) {
processedOpts.fields = this.preprocessFieldsInfo(
processedOpts.fields,
Expand All @@ -38,10 +70,7 @@ var JSON2CSVBase = class {
function: objectFormatter,
object: objectFormatter
};
processedOpts.formatters = {
...defaultFormatters,
...processedOpts.formatters
};
processedOpts.formatters = __spreadValues(__spreadValues({}, defaultFormatters), processedOpts.formatters);
processedOpts.delimiter = processedOpts.delimiter || ",";
processedOpts.eol = processedOpts.eol || "\n";
processedOpts.header = processedOpts.header !== false;
Expand All @@ -67,19 +96,21 @@ var JSON2CSVBase = class {
if (typeof fieldInfo === "object") {
const defaultValue = "default" in fieldInfo ? fieldInfo.default : globalDefaultValue;
if (typeof fieldInfo.value === "string") {
const fieldPath = fieldInfo.value;
return {
label: fieldInfo.label || fieldInfo.value,
value: fieldInfo.value.includes(".") || fieldInfo.value.includes("[") ? (row) => lodashGet(row, fieldInfo.value, defaultValue) : (row) => getProp(row, fieldInfo.value, defaultValue)
value: fieldInfo.value.includes(".") || fieldInfo.value.includes("[") ? (row) => lodashGet(row, fieldPath, defaultValue) : (row) => getProp(row, fieldPath, defaultValue)
};
}
if (typeof fieldInfo.value === "function") {
const label = fieldInfo.label || fieldInfo.value.name || "";
const field = { label, default: defaultValue };
const valueGetter = fieldInfo.value;
return {
label,
value(row) {
const value = fieldInfo.value(row, field);
return value === null || value === void 0 ? defaultValue : value;
const value = valueGetter(row, field);
return value === void 0 ? defaultValue : value;
}
};
}
Expand Down Expand Up @@ -147,9 +178,11 @@ var JSON2CSVBase = class {
* @returns {String} Value stringified and processed
*/
processValue(value) {
return this.opts.formatters[typeof value](value);
const formatter = this.opts.formatters[typeof value];
return formatter(value);
}
};
export {
FormatterTypes,
JSON2CSVBase as default
};
5 changes: 3 additions & 2 deletions dist/cdn/plainjs/Parser.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// packages/plainjs/src/Parser.js
// packages/plainjs/src/Parser.ts
import JSON2CSVBase from "./BaseParser.js";
import { flattenReducer, fastJoin } from "./utils.js";
var JSON2CSVParser = class extends JSON2CSVBase {
Expand All @@ -21,7 +21,8 @@ var JSON2CSVParser = class extends JSON2CSVBase {
}
});
return fields;
}, [])
}, []),
this.opts.defaultValue
);
const header = this.opts.header ? this.getHeader() : "";
const rows = this.processData(preprocessedData);
Expand Down

0 comments on commit f9962b6

Please sign in to comment.