@schedule1-tools/mixer 0.2.2 → 0.2.4
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/README.md +112 -46
- package/dist/bitmaps.d.ts +9 -0
- package/dist/bitmaps.d.ts.map +1 -0
- package/dist/bitmaps.js +45 -0
- package/dist/bitmaps.js.map +1 -0
- package/dist/core/effectSet.d.ts +1 -27
- package/dist/core/effectSet.d.ts.map +1 -0
- package/dist/core/effectSet.js +1 -27
- package/dist/core/effectSet.js.map +1 -0
- package/dist/core/mixer.d.ts +1 -11
- package/dist/core/mixer.d.ts.map +1 -0
- package/dist/core/mixer.js +6 -71
- package/dist/core/mixer.js.map +1 -0
- package/dist/core/reverse.d.ts +3 -0
- package/dist/core/reverse.d.ts.map +1 -0
- package/dist/core/reverse.js +89 -0
- package/dist/core/reverse.js.map +1 -0
- package/dist/data/effects.d.ts +3 -0
- package/dist/data/effects.d.ts.map +1 -0
- package/dist/data/effects.js +159 -148
- package/dist/data/effects.js.map +1 -0
- package/dist/data/products.d.ts +1 -0
- package/dist/data/products.d.ts.map +1 -0
- package/dist/data/products.js +3 -0
- package/dist/data/products.js.map +1 -0
- package/dist/data/rules.d.ts +1 -0
- package/dist/data/rules.d.ts.map +1 -0
- package/dist/data/rules.js +2 -2
- package/dist/data/rules.js.map +1 -0
- package/dist/data/substances.d.ts +1 -0
- package/dist/data/substances.d.ts.map +1 -0
- package/dist/data/substances.js +2 -1
- package/dist/data/substances.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -0
- package/dist/maskRules.d.ts +8 -0
- package/dist/maskRules.d.ts.map +1 -0
- package/dist/maskRules.js +18 -0
- package/dist/maskRules.js.map +1 -0
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/encoding.d.ts +2 -11
- package/dist/utils/encoding.d.ts.map +1 -0
- package/dist/utils/encoding.js +39 -21
- package/dist/utils/encoding.js.map +1 -0
- package/package.json +4 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
export { encodeMixState, decodeMixState, migrateMixHash } from './utils/encoding';
|
|
1
2
|
export { mixSubstances, mixFromHash } from './core/mixer';
|
|
2
|
-
export { encodeMixState, decodeMixState } from './utils/encoding';
|
|
3
3
|
export { effects } from './data/effects';
|
|
4
4
|
export { products, productAbbreviations } from './data/products';
|
|
5
5
|
export { substances } from './data/substances';
|
|
6
6
|
export { effectRulesBySubstance } from './data/rules';
|
|
7
7
|
export type { EffectCode, Substance, Product, RankCode, EffectData, SubstanceData, ProductData, EffectRule, MixResult, MixState, } from './types';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,YAAY,EACV,UAAU,EACV,SAAS,EACT,OAAO,EACP,QAAQ,EACR,UAAU,EACV,aAAa,EACb,WAAW,EACX,UAAU,EACV,SAAS,EACT,QAAQ,GACT,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.effectRulesBySubstance = exports.substances = exports.productAbbreviations = exports.products = exports.effects = exports.
|
|
4
|
-
// Main exports
|
|
5
|
-
var mixer_1 = require("./core/mixer");
|
|
6
|
-
Object.defineProperty(exports, "mixSubstances", { enumerable: true, get: function () { return mixer_1.mixSubstances; } });
|
|
7
|
-
Object.defineProperty(exports, "mixFromHash", { enumerable: true, get: function () { return mixer_1.mixFromHash; } });
|
|
3
|
+
exports.effectRulesBySubstance = exports.substances = exports.productAbbreviations = exports.products = exports.effects = exports.mixFromHash = exports.mixSubstances = exports.migrateMixHash = exports.decodeMixState = exports.encodeMixState = void 0;
|
|
8
4
|
var encoding_1 = require("./utils/encoding");
|
|
9
5
|
Object.defineProperty(exports, "encodeMixState", { enumerable: true, get: function () { return encoding_1.encodeMixState; } });
|
|
10
6
|
Object.defineProperty(exports, "decodeMixState", { enumerable: true, get: function () { return encoding_1.decodeMixState; } });
|
|
11
|
-
|
|
7
|
+
Object.defineProperty(exports, "migrateMixHash", { enumerable: true, get: function () { return encoding_1.migrateMixHash; } });
|
|
8
|
+
var mixer_1 = require("./core/mixer");
|
|
9
|
+
Object.defineProperty(exports, "mixSubstances", { enumerable: true, get: function () { return mixer_1.mixSubstances; } });
|
|
10
|
+
Object.defineProperty(exports, "mixFromHash", { enumerable: true, get: function () { return mixer_1.mixFromHash; } });
|
|
12
11
|
var effects_1 = require("./data/effects");
|
|
13
12
|
Object.defineProperty(exports, "effects", { enumerable: true, get: function () { return effects_1.effects; } });
|
|
14
13
|
var products_1 = require("./data/products");
|
|
@@ -18,3 +17,4 @@ var substances_1 = require("./data/substances");
|
|
|
18
17
|
Object.defineProperty(exports, "substances", { enumerable: true, get: function () { return substances_1.substances; } });
|
|
19
18
|
var rules_1 = require("./data/rules");
|
|
20
19
|
Object.defineProperty(exports, "effectRulesBySubstance", { enumerable: true, get: function () { return rules_1.effectRulesBySubstance; } });
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6CAAkF;AAAzE,0GAAA,cAAc,OAAA;AAAE,0GAAA,cAAc,OAAA;AAAE,0GAAA,cAAc,OAAA;AACvD,sCAA0D;AAAjD,sGAAA,aAAa,OAAA;AAAE,oGAAA,WAAW,OAAA;AAEnC,0CAAyC;AAAhC,kGAAA,OAAO,OAAA;AAChB,4CAAiE;AAAxD,oGAAA,QAAQ,OAAA;AAAE,gHAAA,oBAAoB,OAAA;AACvC,gDAA+C;AAAtC,wGAAA,UAAU,OAAA;AACnB,sCAAsD;AAA7C,+GAAA,sBAAsB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maskRules.d.ts","sourceRoot":"","sources":["../src/maskRules.ts"],"names":[],"mappings":"AAMA,KAAK,QAAQ,GAAG;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAa7B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.maskRulesBySubstance = void 0;
|
|
4
|
+
const bitmaps_1 = require("./bitmaps");
|
|
5
|
+
const rules_1 = require("./data/rules");
|
|
6
|
+
exports.maskRulesBySubstance = Object.fromEntries(Object.entries(rules_1.effectRulesBySubstance).map(([sub, rules]) => [
|
|
7
|
+
sub,
|
|
8
|
+
rules.map((r) => {
|
|
9
|
+
const ip = r.ifPresent.reduce((m, e) => m | bitmaps_1.codeToBit[e], BigInt(0));
|
|
10
|
+
const inot = r.ifNotPresent.reduce((m, e) => m | bitmaps_1.codeToBit[e], BigInt(0));
|
|
11
|
+
const rep = [];
|
|
12
|
+
for (const [oldE, newE] of Object.entries(r.replace)) {
|
|
13
|
+
rep.push([bitmaps_1.codeToBit[oldE], bitmaps_1.codeToBit[newE]]);
|
|
14
|
+
}
|
|
15
|
+
return { ifPresentMask: ip, ifNotPresentMask: inot, replaceMask: rep };
|
|
16
|
+
}),
|
|
17
|
+
]));
|
|
18
|
+
//# sourceMappingURL=maskRules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maskRules.js","sourceRoot":"","sources":["../src/maskRules.ts"],"names":[],"mappings":";;;AAGA,uCAAsC;AACtC,wCAAsD;AAQzC,QAAA,oBAAoB,GAA+B,MAAM,CAAC,WAAW,CAChF,MAAM,CAAC,OAAO,CAAC,8BAAsB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;IAC3D,GAAG;IACH,KAAK,CAAC,GAAG,CAAC,CAAC,CAAa,EAAE,EAAE;QAC1B,MAAM,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,mBAAS,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,mBAAS,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAA+B,EAAE,CAAC;YACnF,GAAG,CAAC,IAAI,CAAC,CAAC,mBAAS,CAAC,IAAI,CAAC,EAAE,mBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;IACzE,CAAC,CAAC;CACH,CAAC,CAC2B,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type EffectCode = 'Ag' | 'At' | 'Ba' | 'Be' | 'Ca' | 'Cd' | 'Cy' | 'Di' | 'El' | 'En' | 'Eu' | 'Ex' | 'Fc' | 'Fo' | 'Gi' | 'Gl' | 'Je' | 'La' | 'Lf' | 'Mu' | 'Pa' | 'Re' | 'Sc' | 'Se' | 'Sh' | 'Si' | 'Sl' | 'Sm' | 'Sn' | 'Sp' | 'To' | 'Tp' | 'Tt' | 'Zo';
|
|
2
|
-
export type Substance = 'Cuke' | 'Flu Medicine' | 'Gasoline' | 'Donut' | 'Energy Drink' | 'Mouth Wash' | 'Motor Oil' | 'Banana' | 'Chili' | 'Iodine' | 'Paracetamol' | '
|
|
2
|
+
export type Substance = 'Cuke' | 'Flu Medicine' | 'Gasoline' | 'Donut' | 'Energy Drink' | 'Mouth Wash' | 'Motor Oil' | 'Banana' | 'Chili' | 'Iodine' | 'Paracetamol' | 'Viagor' | 'Horse Semen' | 'Mega Bean' | 'Addy' | 'Battery';
|
|
3
3
|
export type Product = 'OG Kush' | 'Sour Diesel' | 'Green Crack' | 'Grandaddy Purple' | 'Meth' | 'Cocaine';
|
|
4
4
|
export type RankCode = '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | '11' | '12' | '13';
|
|
5
5
|
export interface EffectData {
|
|
@@ -20,6 +20,7 @@ export interface ProductData {
|
|
|
20
20
|
price: number;
|
|
21
21
|
effects: EffectCode[];
|
|
22
22
|
abbreviation: string;
|
|
23
|
+
addiction?: number;
|
|
23
24
|
}
|
|
24
25
|
export interface EffectRule {
|
|
25
26
|
ifPresent: EffectCode[];
|
|
@@ -38,3 +39,4 @@ export interface MixState {
|
|
|
38
39
|
product: Product;
|
|
39
40
|
substances: Substance[];
|
|
40
41
|
}
|
|
42
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAClB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAET,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,cAAc,GACd,UAAU,GACV,OAAO,GACP,cAAc,GACd,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,aAAa,GACb,QAAQ,GACR,aAAa,GACb,WAAW,GACX,MAAM,GACN,SAAS,CAAC;AAEd,MAAM,MAAM,OAAO,GACf,SAAS,GACT,aAAa,GACb,aAAa,GACb,kBAAkB,GAClB,MAAM,GACN,SAAS,CAAC;AAEd,MAAM,MAAM,QAAQ,GAChB,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAET,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB"}
|
package/dist/types.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/utils/encoding.d.ts
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
import type { MixState } from '../types';
|
|
2
|
-
/**
|
|
3
|
-
* Encode a mix state into a URL-safe string
|
|
4
|
-
* @param state - The mix state to encode
|
|
5
|
-
* @returns The URL-safe string
|
|
6
|
-
* @throws Error if the product type or any substance code is invalid
|
|
7
|
-
*/
|
|
8
2
|
export declare function encodeMixState(state: MixState): string;
|
|
9
|
-
/**
|
|
10
|
-
* Decode a mix state from a URL-safe string
|
|
11
|
-
* @param hash - The URL-safe string to decode
|
|
12
|
-
* @returns The decoded MixState or null if invalid
|
|
13
|
-
*/
|
|
14
3
|
export declare function decodeMixState(hash: string): MixState | null;
|
|
4
|
+
export declare function migrateMixHash(legacyHash: string): Promise<string | null>;
|
|
5
|
+
//# sourceMappingURL=encoding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../src/utils/encoding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAsB,MAAM,UAAU,CAAC;AAa7D,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAqBtD;AAOD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAyC5D;AAOD,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmC/E"}
|
package/dist/utils/encoding.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.encodeMixState = encodeMixState;
|
|
4
7
|
exports.decodeMixState = decodeMixState;
|
|
8
|
+
exports.migrateMixHash = migrateMixHash;
|
|
9
|
+
const lz_string_1 = __importDefault(require("lz-string"));
|
|
5
10
|
const products_1 = require("../data/products");
|
|
6
11
|
const substances_1 = require("../data/substances");
|
|
7
|
-
/**
|
|
8
|
-
* Encode a mix state into a URL-safe string
|
|
9
|
-
* @param state - The mix state to encode
|
|
10
|
-
* @returns The URL-safe string
|
|
11
|
-
* @throws Error if the product type or any substance code is invalid
|
|
12
|
-
*/
|
|
13
12
|
function encodeMixState(state) {
|
|
14
13
|
if (!products_1.products[state.product]) {
|
|
15
14
|
throw new Error(`Invalid product type: ${state.product}`);
|
|
@@ -29,11 +28,6 @@ function encodeMixState(state) {
|
|
|
29
28
|
const encoded = `${state.product}:${abbreviatedSubstances.join('')}`;
|
|
30
29
|
return toBase64Url(encoded);
|
|
31
30
|
}
|
|
32
|
-
/**
|
|
33
|
-
* Decode a mix state from a URL-safe string
|
|
34
|
-
* @param hash - The URL-safe string to decode
|
|
35
|
-
* @returns The decoded MixState or null if invalid
|
|
36
|
-
*/
|
|
37
31
|
function decodeMixState(hash) {
|
|
38
32
|
if (!hash || typeof hash !== 'string') {
|
|
39
33
|
return null;
|
|
@@ -68,11 +62,39 @@ function decodeMixState(hash) {
|
|
|
68
62
|
return null;
|
|
69
63
|
}
|
|
70
64
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
65
|
+
async function migrateMixHash(legacyHash) {
|
|
66
|
+
try {
|
|
67
|
+
const jsonStr = lz_string_1.default.decompressFromBase64(legacyHash);
|
|
68
|
+
if (!jsonStr)
|
|
69
|
+
return null;
|
|
70
|
+
const mixArr = JSON.parse(jsonStr);
|
|
71
|
+
if (!Array.isArray(mixArr) || !mixArr.length)
|
|
72
|
+
return null;
|
|
73
|
+
const firstMix = mixArr[0];
|
|
74
|
+
const productId = firstMix.weed;
|
|
75
|
+
if (!products_1.products[productId])
|
|
76
|
+
return null;
|
|
77
|
+
const subsByAbbr = Object.entries(substances_1.substances).reduce((map, [id, sub]) => {
|
|
78
|
+
if (sub.abbreviation)
|
|
79
|
+
map[sub.abbreviation] = id;
|
|
80
|
+
return map;
|
|
81
|
+
}, {});
|
|
82
|
+
const substanceIds = [];
|
|
83
|
+
if (Array.isArray(firstMix.substances)) {
|
|
84
|
+
for (const legacySubId of firstMix.substances) {
|
|
85
|
+
const substanceId = substances_1.substances[legacySubId]
|
|
86
|
+
? legacySubId
|
|
87
|
+
: subsByAbbr[legacySubId];
|
|
88
|
+
if (substanceId)
|
|
89
|
+
substanceIds.push(substanceId);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return encodeMixState({ product: productId, substances: substanceIds });
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
76
98
|
function toBase64Url(str) {
|
|
77
99
|
return Buffer.from(str, 'utf-8')
|
|
78
100
|
.toString('base64')
|
|
@@ -80,11 +102,6 @@ function toBase64Url(str) {
|
|
|
80
102
|
.replace(/\//g, '_')
|
|
81
103
|
.replace(/=/g, '');
|
|
82
104
|
}
|
|
83
|
-
/**
|
|
84
|
-
* Convert a URL-safe base64 string back to a regular string
|
|
85
|
-
* @param str - The URL-safe base64 string to convert
|
|
86
|
-
* @returns The regular string
|
|
87
|
-
*/
|
|
88
105
|
function fromBase64Url(str) {
|
|
89
106
|
if (typeof str !== 'string') {
|
|
90
107
|
throw new Error('Input must be a string');
|
|
@@ -94,3 +111,4 @@ function fromBase64Url(str) {
|
|
|
94
111
|
const padded = padding ? base64 + '='.repeat(4 - padding) : base64;
|
|
95
112
|
return Buffer.from(padded, 'base64').toString('utf-8');
|
|
96
113
|
}
|
|
114
|
+
//# sourceMappingURL=encoding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoding.js","sourceRoot":"","sources":["../../src/utils/encoding.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@schedule1-tools/mixer",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"description": "A package for calculating substance mixes in Schedule 1",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -12,6 +12,9 @@
|
|
|
12
12
|
],
|
|
13
13
|
"author": "Schedule1 Tools",
|
|
14
14
|
"license": "MIT",
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"lz-string": "^1.5.0"
|
|
17
|
+
},
|
|
15
18
|
"devDependencies": {
|
|
16
19
|
"@ianvs/prettier-plugin-sort-imports": "^4.4.1",
|
|
17
20
|
"@types/jest": "^29.5.14",
|