@tjetak/fortuna 1.0.0-alpha.1
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/build/index.js +98 -0
- package/dist/FlexibleCalculator.d.ts +14 -0
- package/dist/FlexibleCalculator.js +41 -0
- package/dist/Frame.d.ts +8 -0
- package/dist/Frame.js +8 -0
- package/dist/QuantityMargin.d.ts +7 -0
- package/dist/QuantityMargin.js +7 -0
- package/dist/calculations/frames.d.ts +4 -0
- package/dist/calculations/frames.js +44 -0
- package/dist/configs/Frame.d.ts +11 -0
- package/dist/configs/Frame.js +11 -0
- package/dist/helpers/generateFrameConfig.d.ts +4 -0
- package/dist/helpers/generateFrameConfig.js +5 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +6 -0
- package/dist/mocks/frames.d.ts +7 -0
- package/dist/mocks/frames.js +187 -0
- package/dist/types/calculations/Frame.d.ts +15 -0
- package/dist/types/calculations/Frame.js +0 -0
- package/dist/types/data/Frame.d.ts +6 -0
- package/dist/types/data/Frame.js +0 -0
- package/dist/types/data/QuantityMargin.d.ts +5 -0
- package/dist/types/data/QuantityMargin.js +0 -0
- package/dist/types/inputs/Pouch.d.ts +10 -0
- package/dist/types/inputs/Pouch.js +0 -0
- package/package.json +68 -0
package/build/index.js
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
'use strict';
|
2
|
+
class Frame {
|
3
|
+
constructor({material, model, price, discount}) {
|
4
|
+
this.material = material;
|
5
|
+
this.model = model;
|
6
|
+
this.price = price;
|
7
|
+
this.discount = discount;
|
8
|
+
}
|
9
|
+
}
|
10
|
+
class QuantityMargin {
|
11
|
+
constructor({min, max, qty}) {
|
12
|
+
this.min = min;
|
13
|
+
this.max = max;
|
14
|
+
this.qty = qty;
|
15
|
+
}
|
16
|
+
}
|
17
|
+
function calculateFrameCost(pouch, frame) {
|
18
|
+
let pricePerFrame = frame.price;
|
19
|
+
let discount = frame.discount;
|
20
|
+
let quantity = pouch.quantity;
|
21
|
+
let inputtedModel = pouch.model;
|
22
|
+
let inputtedHeight = pouch.height;
|
23
|
+
let inputtedLength = pouch.length;
|
24
|
+
let inputtedWidth = pouch.width;
|
25
|
+
let inputtedFin = pouch.fin;
|
26
|
+
let productSize = {length:inputtedLength, height:inputtedHeight, };
|
27
|
+
let finalPricePerFrame = pricePerFrame - pricePerFrame * discount;
|
28
|
+
let upsPerFrame = 0;
|
29
|
+
if (inputtedModel === "Standing Pouch" || inputtedModel === "Layflat Pouch") {
|
30
|
+
upsPerFrame = Math.floor(74 / (inputtedHeight * 2)) * Math.floor(110 / inputtedLength);
|
31
|
+
} else {
|
32
|
+
if (inputtedModel === "Center Seal" && inputtedFin) {
|
33
|
+
upsPerFrame = Math.floor(74 / ((inputtedLength + inputtedFin) * 2)) * Math.floor(110 / inputtedHeight);
|
34
|
+
} else {
|
35
|
+
if (inputtedModel === "Gusset" && inputtedFin && inputtedWidth) {
|
36
|
+
upsPerFrame = Math.floor(74 / ((inputtedLength + inputtedWidth + inputtedFin) * 2)) * Math.floor(110 / (inputtedHeight + inputtedFin));
|
37
|
+
productSize["width"] = inputtedWidth;
|
38
|
+
}
|
39
|
+
}
|
40
|
+
}
|
41
|
+
let productPricePerPcs = finalPricePerFrame / upsPerFrame;
|
42
|
+
let cost = {formula:"(finalPricePerFrame / upsPerFrame) * quantity", value:productPricePerPcs * quantity, };
|
43
|
+
return {upsPerFrame, pricePerFrame, finalPricePerFrame, productPricePerPcs, productSize, cost, };
|
44
|
+
}
|
45
|
+
class FrameConfig {
|
46
|
+
constructor(frame, quantity, pouchInput) {
|
47
|
+
this.frame = frame;
|
48
|
+
this.quantity = quantity;
|
49
|
+
this.frameCalculation = calculateFrameCost(pouchInput, frame);
|
50
|
+
this._totalCost = this.frameCalculation.cost.value;
|
51
|
+
this._totalUnitCost = this.frameCalculation.productPricePerPcs;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
function generateFrameConfig(pouchInput, frame) {
|
55
|
+
let config = new FrameConfig(frame, pouchInput.quantity, pouchInput);
|
56
|
+
return config;
|
57
|
+
}
|
58
|
+
class FlexibleCalculator {
|
59
|
+
constructor() {
|
60
|
+
this._MAX_POUCH_INPUT_LENGTH = 35;
|
61
|
+
this._frames = [];
|
62
|
+
this._quantityMargin = [];
|
63
|
+
}
|
64
|
+
set frames(data) {
|
65
|
+
this._frames = data.map(frame => new Frame(frame));
|
66
|
+
}
|
67
|
+
set quantityMargins(data) {
|
68
|
+
this._quantityMargin = data.map(marginPerQty => new QuantityMargin(marginPerQty));
|
69
|
+
}
|
70
|
+
calculatePouch(pouchInput) {
|
71
|
+
let result;
|
72
|
+
let frame = this._frames.find(frame => {
|
73
|
+
return frame.material === pouchInput.material && frame.model === pouchInput.model;
|
74
|
+
});
|
75
|
+
if (!frame) {
|
76
|
+
throw Error(`Frame '${pouchInput.material}' not found in frames.`);
|
77
|
+
}
|
78
|
+
if (pouchInput.model === "Standing Pouch" || pouchInput.model === "Layflat Pouch" || pouchInput.model === "Gusset") {
|
79
|
+
if (pouchInput.height > this._MAX_POUCH_INPUT_LENGTH) {
|
80
|
+
throw Error(`Maximum height is ${this._MAX_POUCH_INPUT_LENGTH}.`);
|
81
|
+
}
|
82
|
+
}
|
83
|
+
if (pouchInput.model === "Center Seal") {
|
84
|
+
if (pouchInput.length > this._MAX_POUCH_INPUT_LENGTH) {
|
85
|
+
throw Error(`Maximum length is ${this._MAX_POUCH_INPUT_LENGTH}.`);
|
86
|
+
}
|
87
|
+
}
|
88
|
+
let frameConfig = generateFrameConfig(pouchInput, frame);
|
89
|
+
return frameConfig;
|
90
|
+
}
|
91
|
+
calculate(pouchInput) {
|
92
|
+
let result = this.calculatePouch(pouchInput);
|
93
|
+
return result;
|
94
|
+
}
|
95
|
+
}
|
96
|
+
var index = new FlexibleCalculator;
|
97
|
+
module.exports = index
|
98
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import FrameData from './types/data/Frame';
|
2
|
+
import PouchInput from './types/inputs/Pouch';
|
3
|
+
import MarginData from './types/data/QuantityMargin';
|
4
|
+
import FrameConfig from './configs/Frame';
|
5
|
+
export default class FlexibleCalculator {
|
6
|
+
private _frames;
|
7
|
+
private _quantityMargin;
|
8
|
+
private _MAX_POUCH_INPUT_LENGTH;
|
9
|
+
constructor();
|
10
|
+
set frames(data: FrameData[]);
|
11
|
+
set quantityMargins(data: MarginData[]);
|
12
|
+
private calculatePouch;
|
13
|
+
calculate(pouchInput: PouchInput): FrameConfig;
|
14
|
+
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
import Frame from './Frame';
|
2
|
+
import QuantityMargin from './QuantityMargin';
|
3
|
+
import generateFrameConfig from './helpers/generateFrameConfig';
|
4
|
+
export default class FlexibleCalculator {
|
5
|
+
constructor() {
|
6
|
+
this._MAX_POUCH_INPUT_LENGTH = 35;
|
7
|
+
this._frames = [];
|
8
|
+
this._quantityMargin = [];
|
9
|
+
}
|
10
|
+
set frames(data) {
|
11
|
+
this._frames = data.map((frame) => new Frame(frame));
|
12
|
+
}
|
13
|
+
set quantityMargins(data) {
|
14
|
+
this._quantityMargin = data.map((marginPerQty) => new QuantityMargin(marginPerQty));
|
15
|
+
}
|
16
|
+
calculatePouch(pouchInput) {
|
17
|
+
let result;
|
18
|
+
const frame = this._frames.find((frame) => {
|
19
|
+
return (frame.material === pouchInput.material &&
|
20
|
+
frame.model === pouchInput.model);
|
21
|
+
});
|
22
|
+
if (!frame)
|
23
|
+
throw Error(`Frame '${pouchInput.material}' not found in frames.`);
|
24
|
+
if (pouchInput.model === 'Standing Pouch' ||
|
25
|
+
pouchInput.model === 'Layflat Pouch' ||
|
26
|
+
pouchInput.model === 'Gusset') {
|
27
|
+
if (pouchInput.height > this._MAX_POUCH_INPUT_LENGTH)
|
28
|
+
throw Error(`Maximum height is ${this._MAX_POUCH_INPUT_LENGTH}.`);
|
29
|
+
}
|
30
|
+
if (pouchInput.model === 'Center Seal') {
|
31
|
+
if (pouchInput.length > this._MAX_POUCH_INPUT_LENGTH)
|
32
|
+
throw Error(`Maximum length is ${this._MAX_POUCH_INPUT_LENGTH}.`);
|
33
|
+
}
|
34
|
+
const frameConfig = generateFrameConfig(pouchInput, frame);
|
35
|
+
return frameConfig;
|
36
|
+
}
|
37
|
+
calculate(pouchInput) {
|
38
|
+
const result = this.calculatePouch(pouchInput);
|
39
|
+
return result;
|
40
|
+
}
|
41
|
+
}
|
package/dist/Frame.d.ts
ADDED
package/dist/Frame.js
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
export default function calculateFrameCost(pouch, frame) {
|
2
|
+
const pricePerFrame = frame.price;
|
3
|
+
const discount = frame.discount;
|
4
|
+
const quantity = pouch.quantity;
|
5
|
+
const inputtedModel = pouch.model;
|
6
|
+
const inputtedHeight = pouch.height;
|
7
|
+
const inputtedLength = pouch.length;
|
8
|
+
const inputtedWidth = pouch.width;
|
9
|
+
const inputtedFin = pouch.fin;
|
10
|
+
const productSize = {
|
11
|
+
length: inputtedLength,
|
12
|
+
height: inputtedHeight,
|
13
|
+
};
|
14
|
+
const finalPricePerFrame = pricePerFrame - pricePerFrame * discount;
|
15
|
+
let upsPerFrame = 0;
|
16
|
+
if (inputtedModel === 'Standing Pouch' || inputtedModel === 'Layflat Pouch') {
|
17
|
+
upsPerFrame =
|
18
|
+
Math.floor(74 / (inputtedHeight * 2)) * Math.floor(110 / inputtedLength);
|
19
|
+
}
|
20
|
+
else if (inputtedModel === 'Center Seal' && inputtedFin) {
|
21
|
+
upsPerFrame =
|
22
|
+
Math.floor(74 / ((inputtedLength + inputtedFin) * 2)) *
|
23
|
+
Math.floor(110 / inputtedHeight);
|
24
|
+
}
|
25
|
+
else if (inputtedModel === 'Gusset' && inputtedFin && inputtedWidth) {
|
26
|
+
upsPerFrame =
|
27
|
+
Math.floor(74 / ((inputtedLength + inputtedWidth + inputtedFin) * 2)) *
|
28
|
+
Math.floor(110 / (inputtedHeight + inputtedFin));
|
29
|
+
productSize['width'] = inputtedWidth;
|
30
|
+
}
|
31
|
+
const productPricePerPcs = finalPricePerFrame / upsPerFrame;
|
32
|
+
const cost = {
|
33
|
+
formula: '(finalPricePerFrame / upsPerFrame) * quantity',
|
34
|
+
value: productPricePerPcs * quantity,
|
35
|
+
};
|
36
|
+
return {
|
37
|
+
upsPerFrame,
|
38
|
+
pricePerFrame,
|
39
|
+
finalPricePerFrame,
|
40
|
+
productPricePerPcs,
|
41
|
+
productSize,
|
42
|
+
cost,
|
43
|
+
};
|
44
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import Frame from '../Frame';
|
2
|
+
import FrameCalculation from '../types/calculations/Frame';
|
3
|
+
import PouchInput from '../types/inputs/Pouch';
|
4
|
+
export default class FrameConfig {
|
5
|
+
readonly frame: Frame;
|
6
|
+
readonly quantity: number;
|
7
|
+
readonly _totalCost: number;
|
8
|
+
readonly _totalUnitCost: number;
|
9
|
+
readonly frameCalculation: FrameCalculation;
|
10
|
+
constructor(frame: Frame, quantity: number, pouchInput: PouchInput);
|
11
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import calculateFrameCost from '../calculations/frames';
|
2
|
+
export default class FrameConfig {
|
3
|
+
constructor(frame, quantity, pouchInput) {
|
4
|
+
// this.frameCalculation = calculateFrameCost();
|
5
|
+
this.frame = frame;
|
6
|
+
this.quantity = quantity;
|
7
|
+
this.frameCalculation = calculateFrameCost(pouchInput, frame);
|
8
|
+
this._totalCost = this.frameCalculation.cost.value;
|
9
|
+
this._totalUnitCost = this.frameCalculation.productPricePerPcs;
|
10
|
+
}
|
11
|
+
}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
import FlexibleCalculator from './FlexibleCalculator';
|
2
|
+
// import frames from '../src/mocks/frames';
|
3
|
+
// let fortuna = new FlexibleCalculator();
|
4
|
+
// fortuna.frames = frames;
|
5
|
+
// console.log(JSON.stringify(fortuna.frames, null, 4))
|
6
|
+
export default new FlexibleCalculator();
|
@@ -0,0 +1,187 @@
|
|
1
|
+
// const docs = {
|
2
|
+
// discount:
|
3
|
+
// frames:[]
|
4
|
+
// }
|
5
|
+
const frames = [
|
6
|
+
{
|
7
|
+
material: 'BOPP.Clear20/LLDPE60-90 (TRANS)',
|
8
|
+
model: 'Standing Pouch',
|
9
|
+
price: 21000,
|
10
|
+
discount: 0.2,
|
11
|
+
},
|
12
|
+
{
|
13
|
+
material: 'BOPP.Clear20/LLDPE60-90 (TRANS)',
|
14
|
+
model: 'Layflat Pouch',
|
15
|
+
price: 20600,
|
16
|
+
discount: 0.2,
|
17
|
+
},
|
18
|
+
{
|
19
|
+
material: 'BOPP.Clear20/LLDPE60-90 (TRANS)',
|
20
|
+
model: 'Center Seal',
|
21
|
+
price: 20600,
|
22
|
+
discount: 0.2,
|
23
|
+
},
|
24
|
+
{
|
25
|
+
material: 'BOPP.Clear20/LLDPE60-90 (TRANS)',
|
26
|
+
model: 'Gusset',
|
27
|
+
price: 20600,
|
28
|
+
discount: 0.2,
|
29
|
+
},
|
30
|
+
{
|
31
|
+
material: 'BOPP.Doff20/LLDPE60-90 (TRANS)',
|
32
|
+
model: 'Standing Pouch',
|
33
|
+
price: 21000,
|
34
|
+
discount: 0.2,
|
35
|
+
},
|
36
|
+
{
|
37
|
+
material: 'BOPP.Doff20/LLDPE60-90 (TRANS)',
|
38
|
+
model: 'Layflat Pouch',
|
39
|
+
price: 20600,
|
40
|
+
discount: 0.2,
|
41
|
+
},
|
42
|
+
{
|
43
|
+
material: 'BOPP.Doff20/LLDPE60-90 (TRANS)',
|
44
|
+
model: 'Center Seal',
|
45
|
+
price: 20600,
|
46
|
+
discount: 0.2,
|
47
|
+
},
|
48
|
+
{
|
49
|
+
material: 'BOPP.Doff20/LLDPE60-90 (TRANS)',
|
50
|
+
model: 'Gusset',
|
51
|
+
price: 20600,
|
52
|
+
discount: 0.2,
|
53
|
+
},
|
54
|
+
{
|
55
|
+
material: 'NYLON15/LLDPE60-90 (TRANS)',
|
56
|
+
model: 'Standing Pouch',
|
57
|
+
price: 21000,
|
58
|
+
discount: 0.2,
|
59
|
+
},
|
60
|
+
{
|
61
|
+
material: 'NYLON15/LLDPE60-90 (TRANS)',
|
62
|
+
model: 'Layflat Pouch',
|
63
|
+
price: 21000,
|
64
|
+
discount: 0.2,
|
65
|
+
},
|
66
|
+
{
|
67
|
+
material: 'NYLON15/LLDPE60-90 (TRANS)',
|
68
|
+
model: 'Center Seal',
|
69
|
+
price: 20600,
|
70
|
+
discount: 0.2,
|
71
|
+
},
|
72
|
+
{
|
73
|
+
material: 'NYLON15/LLDPE60-90 (TRANS)',
|
74
|
+
model: 'Gusset',
|
75
|
+
price: 20600,
|
76
|
+
discount: 0.2,
|
77
|
+
},
|
78
|
+
{
|
79
|
+
material: 'BOPP.Clear20/VMPET12/LLDPE60-90 (MET)',
|
80
|
+
model: 'Standing Pouch',
|
81
|
+
price: 22968.75,
|
82
|
+
discount: 0.2,
|
83
|
+
},
|
84
|
+
{
|
85
|
+
material: 'BOPP.Clear20/VMPET12/LLDPE60-90 (MET)',
|
86
|
+
model: 'Layflat Pouch',
|
87
|
+
price: 22531.25,
|
88
|
+
discount: 0.2,
|
89
|
+
},
|
90
|
+
{
|
91
|
+
material: 'BOPP.Clear20/VMPET12/LLDPE60-90 (MET)',
|
92
|
+
model: 'Center Seal',
|
93
|
+
price: 22531.25,
|
94
|
+
discount: 0.2,
|
95
|
+
},
|
96
|
+
{
|
97
|
+
material: 'BOPP.Clear20/VMPET12/LLDPE60-90 (MET)',
|
98
|
+
model: 'Gusset',
|
99
|
+
price: 22531.25,
|
100
|
+
discount: 0.2,
|
101
|
+
},
|
102
|
+
{
|
103
|
+
material: 'BOPP.Doff20/VMPET12/LLDPE60-90 (MET)',
|
104
|
+
model: 'Standing Pouch',
|
105
|
+
price: 22968.75,
|
106
|
+
discount: 0.2,
|
107
|
+
},
|
108
|
+
{
|
109
|
+
material: 'BOPP.Doff20/VMPET12/LLDPE60-90 (MET)',
|
110
|
+
model: 'Layflat Pouch',
|
111
|
+
price: 22531.25,
|
112
|
+
discount: 0.2,
|
113
|
+
},
|
114
|
+
{
|
115
|
+
material: 'BOPP.Doff20/VMPET12/LLDPE60-90 (MET)',
|
116
|
+
model: 'Center Seal',
|
117
|
+
price: 22531.25,
|
118
|
+
discount: 0.2,
|
119
|
+
},
|
120
|
+
{
|
121
|
+
material: 'BOPP.Doff20/VMPET12/LLDPE60-90 (MET)',
|
122
|
+
model: 'Gusset',
|
123
|
+
price: 22531.25,
|
124
|
+
discount: 0.2,
|
125
|
+
},
|
126
|
+
{
|
127
|
+
material: 'BOPP.Clear20/ALU7/LLDPE60-90 (ALU)',
|
128
|
+
model: 'Standing Pouch',
|
129
|
+
price: 24937.5,
|
130
|
+
discount: 0.2,
|
131
|
+
},
|
132
|
+
{
|
133
|
+
material: 'BOPP.Clear20/ALU7/LLDPE60-90 (ALU)',
|
134
|
+
model: 'Layflat Pouch',
|
135
|
+
price: 224462.5,
|
136
|
+
discount: 0.2,
|
137
|
+
},
|
138
|
+
{
|
139
|
+
material: 'BOPP.Clear20/ALU7/LLDPE60-90 (ALU)',
|
140
|
+
model: 'Center Seal',
|
141
|
+
price: 24462.5,
|
142
|
+
discount: 0.2,
|
143
|
+
},
|
144
|
+
{
|
145
|
+
material: 'BOPP.Clear20/ALU7/LLDPE60-90 (ALU)',
|
146
|
+
model: 'Gusset',
|
147
|
+
price: 24462.5,
|
148
|
+
discount: 0.2,
|
149
|
+
},
|
150
|
+
{
|
151
|
+
material: 'BOPP.Doff20/ALU7/LLDPE60-90 (ALU)',
|
152
|
+
model: 'Standing Pouch',
|
153
|
+
price: 24937.5,
|
154
|
+
discount: 0.2,
|
155
|
+
},
|
156
|
+
{
|
157
|
+
material: 'BOPP.Doff20/ALU7/LLDPE60-90 (ALU)',
|
158
|
+
model: 'Layflat Pouch',
|
159
|
+
price: 224462.5,
|
160
|
+
discount: 0.2,
|
161
|
+
},
|
162
|
+
{
|
163
|
+
material: 'BOPP.Doff20/ALU7/LLDPE60-90 (ALU)',
|
164
|
+
model: 'Center Seal',
|
165
|
+
price: 24462.5,
|
166
|
+
discount: 0.2,
|
167
|
+
},
|
168
|
+
{
|
169
|
+
material: 'BOPP.Doff20/ALU7/LLDPE60-90 (ALU)',
|
170
|
+
model: 'Gusset',
|
171
|
+
price: 24462.5,
|
172
|
+
discount: 0.2,
|
173
|
+
},
|
174
|
+
{
|
175
|
+
material: 'BOPPClear20/Nylon15/LLDPE120',
|
176
|
+
model: 'Standing Pouch',
|
177
|
+
price: 30000,
|
178
|
+
discount: 0,
|
179
|
+
},
|
180
|
+
{
|
181
|
+
material: 'BOPPDoff20/Nylon15/LLDPE120',
|
182
|
+
model: 'Standing Pouch',
|
183
|
+
price: 30000,
|
184
|
+
discount: 0,
|
185
|
+
},
|
186
|
+
];
|
187
|
+
export default frames;
|
@@ -0,0 +1,15 @@
|
|
1
|
+
export default interface FrameCalculation {
|
2
|
+
upsPerFrame: number;
|
3
|
+
pricePerFrame: number;
|
4
|
+
finalPricePerFrame: number;
|
5
|
+
productPricePerPcs: number;
|
6
|
+
productSize: {
|
7
|
+
length: number;
|
8
|
+
width?: number;
|
9
|
+
height: number;
|
10
|
+
};
|
11
|
+
cost: {
|
12
|
+
formula: string;
|
13
|
+
value: number;
|
14
|
+
};
|
15
|
+
}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
package/package.json
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
{
|
2
|
+
"name": "@tjetak/fortuna",
|
3
|
+
"version": "1.0.0-alpha.1",
|
4
|
+
"description": "The flexible printing calculator",
|
5
|
+
"main": "dist/index.js",
|
6
|
+
"types": "dist/index.d.ts",
|
7
|
+
"scripts": {
|
8
|
+
"test": "jest",
|
9
|
+
"build": "tsc",
|
10
|
+
"format": "prettier --write \"src/**/*.ts\" \"src/**/*.js\"",
|
11
|
+
"lint": "eslint src --ext .js,.ts --fix",
|
12
|
+
"prepare": "npm run build && npm run build-rollup",
|
13
|
+
"prepublishOnly": "npm test && npm run lint",
|
14
|
+
"preversion": "npm run lint",
|
15
|
+
"version": "npm run format && git add -A src",
|
16
|
+
"postversion": "git push && git push --tags",
|
17
|
+
"release": "standard-version",
|
18
|
+
"build-rollup": "rollup -c"
|
19
|
+
},
|
20
|
+
"repository": {
|
21
|
+
"type": "git",
|
22
|
+
"url": "git+ssh://git@gitlab.com/tjetak/fortuna.git"
|
23
|
+
},
|
24
|
+
"author": "Hasandi Patriawan",
|
25
|
+
"license": "ISC",
|
26
|
+
"bugs": {
|
27
|
+
"url": "https://gitlab.com/tjetak/fortuna/issues"
|
28
|
+
},
|
29
|
+
"homepage": "https://gitlab.com/tjetak/fortuna#readme",
|
30
|
+
"devDependencies": {
|
31
|
+
"@babel/core": "^7.11.6",
|
32
|
+
"@babel/preset-env": "^7.11.5",
|
33
|
+
"@types/jest": "^26.0.14",
|
34
|
+
"@types/lodash-es": "^4.17.3",
|
35
|
+
"@typescript-eslint/eslint-plugin": "^3.10.1",
|
36
|
+
"@typescript-eslint/parser": "^3.10.1",
|
37
|
+
"babel-jest": "^26.5.2",
|
38
|
+
"cz-conventional-changelog": "^3.3.0",
|
39
|
+
"eslint": "^7.10.0",
|
40
|
+
"eslint-config-prettier": "^6.12.0",
|
41
|
+
"eslint-plugin-prettier": "^3.1.4",
|
42
|
+
"jest": "^26.5.2",
|
43
|
+
"prettier": "^2.1.2",
|
44
|
+
"standard-version": "^9.0.0",
|
45
|
+
"ts-jest": "^26.4.1",
|
46
|
+
"typescript": "^3.9.7"
|
47
|
+
},
|
48
|
+
"config": {
|
49
|
+
"commitizen": {
|
50
|
+
"path": "./node_modules/cz-conventional-changelog"
|
51
|
+
}
|
52
|
+
},
|
53
|
+
"dependencies": {
|
54
|
+
"@ampproject/rollup-plugin-closure-compiler": "^0.26.0",
|
55
|
+
"@rollup/plugin-node-resolve": "^8.4.0",
|
56
|
+
"avl": "^1.4.4",
|
57
|
+
"greedy-rect-packer": "^1.0.7",
|
58
|
+
"lodash-es": "^4.17.15",
|
59
|
+
"rollup": "^2.23.0"
|
60
|
+
},
|
61
|
+
"files": [
|
62
|
+
"dist/**/*",
|
63
|
+
"build/**/*"
|
64
|
+
],
|
65
|
+
"directories": {
|
66
|
+
"test": "tests"
|
67
|
+
}
|
68
|
+
}
|