@utiliread/primitives 1.0.0-49 → 1.0.0-51
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/dist/index.d.ts +83 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +255 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +243 -0
- package/dist/index.mjs.map +1 -0
- package/karma.config.js +10 -13
- package/package.json +40 -36
- package/src/index.ts +8 -8
- package/src/number-formatter.spec.ts +2 -2
- package/src/precision-number.spec.ts +28 -0
- package/src/repository.ts +26 -24
- package/src/step.ts +4 -4
- package/src/time-or-rule.ts +3 -3
- package/tsconfig.json +12 -14
- package/tsconfig.test.json +7 -0
- package/dist/cjs/aggregate-id.js +0 -3
- package/dist/cjs/aggregate-id.js.map +0 -1
- package/dist/cjs/array-extensions.js +0 -8
- package/dist/cjs/array-extensions.js.map +0 -1
- package/dist/cjs/consumption-type-id.js +0 -3
- package/dist/cjs/consumption-type-id.js.map +0 -1
- package/dist/cjs/index.js +0 -22
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/measure-id.js +0 -3
- package/dist/cjs/measure-id.js.map +0 -1
- package/dist/cjs/number-formatter.js +0 -81
- package/dist/cjs/number-formatter.js.map +0 -1
- package/dist/cjs/number-formatter.spec.js +0 -96
- package/dist/cjs/number-formatter.spec.js.map +0 -1
- package/dist/cjs/optional.js +0 -3
- package/dist/cjs/optional.js.map +0 -1
- package/dist/cjs/precision-number.js +0 -37
- package/dist/cjs/precision-number.js.map +0 -1
- package/dist/cjs/register-convention.js +0 -61
- package/dist/cjs/register-convention.js.map +0 -1
- package/dist/cjs/register-convention.spec.js +0 -39
- package/dist/cjs/register-convention.spec.js.map +0 -1
- package/dist/cjs/register-definition.js +0 -3
- package/dist/cjs/register-definition.js.map +0 -1
- package/dist/cjs/register-id.js +0 -3
- package/dist/cjs/register-id.js.map +0 -1
- package/dist/cjs/register-library.js +0 -58
- package/dist/cjs/register-library.js.map +0 -1
- package/dist/cjs/register-library.spec.js +0 -37
- package/dist/cjs/register-library.spec.js.map +0 -1
- package/dist/cjs/register-pack.js +0 -3
- package/dist/cjs/register-pack.js.map +0 -1
- package/dist/cjs/register-utils.js +0 -8
- package/dist/cjs/register-utils.js.map +0 -1
- package/dist/cjs/repository.js +0 -26
- package/dist/cjs/repository.js.map +0 -1
- package/dist/cjs/repository.spec.js +0 -21
- package/dist/cjs/repository.spec.js.map +0 -1
- package/dist/cjs/step.js +0 -42
- package/dist/cjs/step.js.map +0 -1
- package/dist/cjs/step.spec.js +0 -29
- package/dist/cjs/step.spec.js.map +0 -1
- package/dist/cjs/time-or-rule.js +0 -19
- package/dist/cjs/time-or-rule.js.map +0 -1
- package/dist/cjs/unit-id.js +0 -14
- package/dist/cjs/unit-id.js.map +0 -1
- package/dist/esm/aggregate-id.d.ts +0 -1
- package/dist/esm/aggregate-id.js +0 -2
- package/dist/esm/aggregate-id.js.map +0 -1
- package/dist/esm/array-extensions.d.ts +0 -4
- package/dist/esm/array-extensions.js +0 -8
- package/dist/esm/array-extensions.js.map +0 -1
- package/dist/esm/consumption-type-id.d.ts +0 -1
- package/dist/esm/consumption-type-id.js +0 -2
- package/dist/esm/consumption-type-id.js.map +0 -1
- package/dist/esm/index.d.ts +0 -16
- package/dist/esm/index.js +0 -10
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/measure-id.d.ts +0 -1
- package/dist/esm/measure-id.js +0 -2
- package/dist/esm/measure-id.js.map +0 -1
- package/dist/esm/number-formatter.d.ts +0 -17
- package/dist/esm/number-formatter.js +0 -78
- package/dist/esm/number-formatter.js.map +0 -1
- package/dist/esm/number-formatter.spec.d.ts +0 -1
- package/dist/esm/number-formatter.spec.js +0 -94
- package/dist/esm/number-formatter.spec.js.map +0 -1
- package/dist/esm/optional.d.ts +0 -1
- package/dist/esm/optional.js +0 -2
- package/dist/esm/optional.js.map +0 -1
- package/dist/esm/precision-number.d.ts +0 -11
- package/dist/esm/precision-number.js +0 -34
- package/dist/esm/precision-number.js.map +0 -1
- package/dist/esm/register-convention.d.ts +0 -14
- package/dist/esm/register-convention.js +0 -57
- package/dist/esm/register-convention.js.map +0 -1
- package/dist/esm/register-convention.spec.d.ts +0 -1
- package/dist/esm/register-convention.spec.js +0 -37
- package/dist/esm/register-convention.spec.js.map +0 -1
- package/dist/esm/register-definition.d.ts +0 -13
- package/dist/esm/register-definition.js +0 -2
- package/dist/esm/register-definition.js.map +0 -1
- package/dist/esm/register-id.d.ts +0 -1
- package/dist/esm/register-id.js +0 -2
- package/dist/esm/register-id.js.map +0 -1
- package/dist/esm/register-library.d.ts +0 -15
- package/dist/esm/register-library.js +0 -55
- package/dist/esm/register-library.js.map +0 -1
- package/dist/esm/register-library.spec.d.ts +0 -1
- package/dist/esm/register-library.spec.js +0 -35
- package/dist/esm/register-library.spec.js.map +0 -1
- package/dist/esm/register-pack.d.ts +0 -4
- package/dist/esm/register-pack.js +0 -2
- package/dist/esm/register-pack.js.map +0 -1
- package/dist/esm/register-utils.d.ts +0 -3
- package/dist/esm/register-utils.js +0 -4
- package/dist/esm/register-utils.js.map +0 -1
- package/dist/esm/repository.d.ts +0 -9
- package/dist/esm/repository.js +0 -22
- package/dist/esm/repository.js.map +0 -1
- package/dist/esm/repository.spec.d.ts +0 -1
- package/dist/esm/repository.spec.js +0 -19
- package/dist/esm/repository.spec.js.map +0 -1
- package/dist/esm/step.d.ts +0 -15
- package/dist/esm/step.js +0 -39
- package/dist/esm/step.js.map +0 -1
- package/dist/esm/step.spec.d.ts +0 -1
- package/dist/esm/step.spec.js +0 -27
- package/dist/esm/step.spec.js.map +0 -1
- package/dist/esm/time-or-rule.d.ts +0 -7
- package/dist/esm/time-or-rule.js +0 -16
- package/dist/esm/time-or-rule.js.map +0 -1
- package/dist/esm/unit-id.d.ts +0 -2
- package/dist/esm/unit-id.js +0 -11
- package/dist/esm/unit-id.js.map +0 -1
- package/tsconfig.cjs.json +0 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":"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","sources":["src/index.ts","src/register-library.ts","src/number-formatter.ts","src/register-convention.ts","src/register-utils.ts","src/step.ts","src/time-or-rule.ts","src/precision-number.ts"],"sourcesContent":["import type { ConsumptionTypeId } from \"./consumption-type-id\";\nimport type { RegisterId } from \"./register-id\";\nimport type { UnitId } from \"./unit-id\";\nimport { RegisterLibrary } from \"./register-library\";\nimport type { RegisterDefinition } from \"./register-definition\";\nimport { NumberFormatter, invariantDecimalSeparator, localeDecimalSeparator } from \"./number-formatter\";\nimport { RegisterConvention } from \"./register-convention\";\nimport type { AggregateId } from \"./aggregate-id\";\nimport type { MeasureId } from \"./measure-id\";\nimport { Step, DayOfWeek } from \"./step\";\nimport { TimeOrRule } from \"./time-or-rule\";\nimport { PrecisionNumber } from \"./precision-number\";\nimport \"./repository\"; // We need this to get the Repository namespace exported\nimport type { Repository } from \"./repository\";\nimport type { Optional } from \"./optional\";\n\nexport {\n AggregateId,\n ConsumptionTypeId,\n DayOfWeek,\n MeasureId,\n NumberFormatter,\n PrecisionNumber,\n RegisterConvention,\n RegisterDefinition,\n RegisterId,\n RegisterLibrary,\n Repository,\n Step,\n TimeOrRule,\n UnitId,\n invariantDecimalSeparator,\n localeDecimalSeparator,\n Optional,\n};\n","import { RegisterDefinition } from \"./register-definition\";\nimport { RegisterId } from \"./register-id\";\nimport { RegisterPack } from \"./register-pack\";\n\nclass Library {\n private definitions: Partial<{ [id in RegisterId]: RegisterDefinition }> = {};\n public add(...definitions: (RegisterDefinition | RegisterPack)[]) {\n for (const definition of definitions) {\n if (isDefinition(definition)) {\n this.tryAdd(definition);\n }\n else {\n for (const definitionInPack of Object.values(definition)) {\n this.tryAdd(definitionInPack);\n }\n }\n }\n }\n\n private tryAdd(definition: RegisterDefinition) {\n if (!this.definitions[definition.id]) {\n this.definitions[definition.id] = definition;\n return true;\n }\n return false;\n }\n\n public has(id: RegisterId) {\n return !!this.definitions[id];\n }\n\n public tryGet(id: RegisterId) {\n return this.definitions[id];\n }\n\n public get(id: RegisterId) {\n const definition = this.definitions[id];\n if (!definition) {\n throw new Error(`Defintion was not loaded for register ${id}`);\n }\n return definition;\n }\n\n public all() {\n return Object.values(this.definitions).map(x => x!);\n }\n\n public reset() {\n this.definitions = {};\n }\n}\n\nfunction isDefinition(definitionOrPack: RegisterDefinition | RegisterPack): definitionOrPack is RegisterDefinition {\n return !!(definitionOrPack.id && definitionOrPack.aggregate && definitionOrPack.units);\n}\n\nexport const RegisterLibrary = new Library();\r\n","export const invariantDecimalSeparator = (0.1).toString()[1];\nexport const localeDecimalSeparator = (0.1).toLocaleString()[1];\n\nexport interface Parts {\n invariantPrecisionString: string;\n invariantCoefficientString: string;\n exponent: number;\n noOfCoefficientDecimals: number;\n}\n\nclass Formatter {\n public toPrecision(value: number, precision: number) {\n if (value === 0) {\n // (0).toPrecision(1) == \"0\"\n // (0).toPrecision(2) == \"0.0\"\n // (0).toPrecision(3) == \"0.00\"\n // However, we want:\n // Formatter.toPrecision(0, 0) == \"0\"\n // Formatter.toPrecision(0, 1) == \"0.0\"\n // Formatter.toPrecision(0, 2) == \"0.00\"\n return value.toPrecision(precision + 1);\n }\n const absValue = Math.abs(value);\n if (absValue < 1) {\n return value.toPrecision(precision);\n }\n\n const noOfIntegerDigits = Math.round(absValue).toString().length;\n return precision >= noOfIntegerDigits\n ? value.toFixed(precision - noOfIntegerDigits)\n : value.toPrecision(precision);\n }\n\n public toLocalePrecision(value: number, precision: number) {\n return this.toPrecision(value, precision)\n .replace(invariantDecimalSeparator, localeDecimalSeparator);\n }\n\n public toFixed(value: number, precision: number) {\n const parts = this.getParts(value, precision);\n if (parts.noOfCoefficientDecimals < parts.exponent) {\n const number = parts.invariantCoefficientString.replace(invariantDecimalSeparator, \"\");\n const zeros = parts.exponent - parts.noOfCoefficientDecimals;\n return `${number}${\"0\".repeat(zeros)}`;\n }\n else {\n return parts.invariantPrecisionString;\n }\n }\n\n public toLocaleFixed(value: number, precision: number) {\n return this.toFixed(value, precision)\n .replace(invariantDecimalSeparator, localeDecimalSeparator);\n }\n\n public getParts(value: number, precision: number): Parts {\n const precisionString = this.toPrecision(value, precision);\n if (precisionString.indexOf(\"e\") >= 0) {\n const match = /(.*)e([\\+-]\\d+)$/.exec(precisionString)!;\n const coefficientString = match[1];\n const exponent = parseInt(match[2]);\n const decimalSeparatorIndex = coefficientString.indexOf(invariantDecimalSeparator);\n const noOfCoefficientDecimals = decimalSeparatorIndex >= 0\n ? coefficientString.length - decimalSeparatorIndex - 1\n : 0;\n return {\n invariantPrecisionString: precisionString,\n invariantCoefficientString: coefficientString,\n exponent,\n noOfCoefficientDecimals,\n };\n }\n else {\n const decimalSeparatorIndex = precisionString.indexOf(invariantDecimalSeparator);\n const noOfCoefficientDecimals = decimalSeparatorIndex >= 0\n ? precisionString.length - decimalSeparatorIndex - 1\n : 0;\n return {\n invariantPrecisionString: precisionString,\n invariantCoefficientString: precisionString,\n exponent: 0,\n noOfCoefficientDecimals,\n };\n }\n }\n}\n\nexport const NumberFormatter = new Formatter();\n","import { RegisterDefinition } from \".\";\nimport { AggregateId } from \"./aggregate-id\";\nimport { RegisterId } from \"./register-id\";\nimport { getRegisterId } from \"./register-utils\";\n\nexport const aggregatePrefixes: { [aggregateId in AggregateId]: string } = {\n instant: \"\",\n diff: \"diff\",\n min: \"min\",\n max: \"max\",\n avg: \"avg\",\n sum: \"sum\",\n cnt: \"cnt\",\n ssq: \"ssq\",\n};\n\nclass Convention {\n public getAggregate(register: RegisterId | RegisterDefinition) {\n const registerId = getRegisterId(register);\n // Brute force all prefixes - if none of them, then it must be instant.\n for (const aggregateString of Object.keys(aggregatePrefixes)) {\n const aggregate = <AggregateId>aggregateString;\n const prefix = aggregatePrefixes[aggregate];\n if (prefix.length && isPrefix(registerId, prefix)) {\n // Not instant - it was any of the others.\n return aggregate;\n }\n }\n return \"instant\";\n }\n\n toInstant(register: RegisterId | RegisterDefinition) {\n const registerId = getRegisterId(register);\n for (const prefix of Object.values(aggregatePrefixes)) {\n if (prefix.length && isPrefix(registerId, prefix)) {\n const tail = registerId.substr(prefix.length);\n return <RegisterId>(tail[0].toLowerCase() + tail.substr(1));\n }\n }\n return registerId;\n }\n\n toAggregate(register: RegisterId | RegisterDefinition, aggregate: AggregateId) {\n const instantRegisterId = this.toInstant(register);\n if (aggregate === \"instant\") {\n return instantRegisterId;\n }\n const prefix = aggregatePrefixes[aggregate];\n return <RegisterId>(prefix + instantRegisterId[0].toUpperCase() + instantRegisterId.substr(1));\n }\n}\n\nexport function isPrefix(registerId: RegisterId, prefix: string) {\n return registerId.startsWith(prefix) && isUppercase(registerId[prefix.length]);\n}\n\nfunction isUppercase(input: string) {\n return input.toUpperCase() === input;\n}\n\nexport const RegisterConvention = new Convention();\r\n","import { RegisterDefinition } from \"./register-definition\";\nimport { RegisterId } from \"./register-id\";\n\nexport function getRegisterId(register: RegisterId | RegisterDefinition) {\n return typeof register === \"string\" ? register : register.id;\n}\r\n","import { DateTime, Duration } from \"luxon\";\n\nexport type Step = \"hour\" | \"day\" | \"week\" | \"month\" | \"year\";\n\nexport enum DayOfWeek {\n Monday = 1,\n Tuesday = 2,\n Wednesday = 3,\n Thursday = 4,\n Friday = 5,\n Saturday = 6,\n Sunday = 7,\n};\n\nnamespace Step {\n export function startOf(dateTime: DateTime, step: Step, firstDayOfWeek?: DayOfWeek): DateTime {\n if (step === \"week\") {\n const value = dateTime.startOf(\"day\").set({ weekday: firstDayOfWeek ?? DayOfWeek.Monday });\n return value > dateTime\n ? value.minus({ days: 7 })\n : value;\n }\n else {\n return dateTime.startOf(step);\n }\n }\n\n export function asDuration(step: Step, amount = 1): Duration {\n switch (step) {\n case \"hour\": return Duration.fromObject({ hours: amount });\n case \"day\": return Duration.fromObject({ days: amount });\n case \"week\": return Duration.fromObject({ days: 7 * amount });\n case \"month\": return Duration.fromObject({ months: amount });\n case \"year\": return Duration.fromObject({ years: amount });\n }\n }\n}\n","import { DateTime } from \"luxon\";\n\nexport type TimeOrRule = Date | DateTime | string;\n\nnamespace TimeOrRule {\n export function isTime(input: TimeOrRule): input is Date | DateTime {\n return typeof input !== \"string\";\n }\n\n export function isRule(input: TimeOrRule): input is string {\n return typeof input === \"string\";\n }\n\n export function asJSON(input: TimeOrRule) {\n return isRule(input) ? input : input.toJSON();\n }\n}\n","import { invariantDecimalSeparator } from \".\";\nimport { localeDecimalSeparator, NumberFormatter } from \"./number-formatter\";\n\nexport class PrecisionNumber {\n constructor(public value: number, public precision: number) {\n }\n\n static parse(input: string) {\n let normalized = input.trim().replace(\",\", \".\").replace(localeDecimalSeparator, invariantDecimalSeparator);\n if (normalized.endsWith(invariantDecimalSeparator)) {\n normalized += \"0\";\n }\n const precision = normalized.replace(\".\", \"\").replace(\"+\", \"\").replace(\"-\", \"\").length;\n return new PrecisionNumber(parseFloat(normalized), precision);\n }\n\n toString() {\n return this.value.toString();\n }\n\n toFixed() {\n return NumberFormatter.toFixed(this.value, this.precision);\n }\n\n toPrecision() {\n return NumberFormatter.toPrecision(this.value, this.precision);\n }\n\n toLocaleFixed() {\n return NumberFormatter.toLocaleFixed(this.value, this.precision);\n }\n\n toLocalePrecision() {\n return NumberFormatter.toLocalePrecision(this.value, this.precision);\n }\n}\n"],"names":[],"version":3,"file":"index.mjs.map"}
|
package/karma.config.js
CHANGED
|
@@ -1,32 +1,29 @@
|
|
|
1
|
-
|
|
2
1
|
const tsconfig = require("./tsconfig.json");
|
|
3
2
|
|
|
4
3
|
module.exports = function (config) {
|
|
5
4
|
config.set({
|
|
6
5
|
frameworks: ["mocha", "chai", "karma-typescript"],
|
|
7
|
-
files: [
|
|
8
|
-
"src/**/*.ts"
|
|
9
|
-
],
|
|
6
|
+
files: ["src/**/*.ts"],
|
|
10
7
|
preprocessors: {
|
|
11
|
-
"src/**/*.ts": ["karma-typescript"]
|
|
8
|
+
"src/**/*.ts": ["karma-typescript"],
|
|
12
9
|
},
|
|
13
10
|
reporters: ["progress", "karma-typescript"],
|
|
14
11
|
browsers: ["ChromeHeadless", "ChromeDebugging", "Chrome"],
|
|
15
12
|
customLaunchers: {
|
|
16
13
|
ChromeDebugging: {
|
|
17
14
|
base: "Chrome",
|
|
18
|
-
flags: ["--remote-debugging-port=9222"]
|
|
19
|
-
}
|
|
15
|
+
flags: ["--remote-debugging-port=9222"],
|
|
16
|
+
},
|
|
20
17
|
},
|
|
21
18
|
karmaTypescriptConfig: {
|
|
22
19
|
bundlerOptions: {
|
|
23
20
|
entrypoints: /\.spec\.ts$/,
|
|
24
|
-
sourceMap: tsconfig.compilerOptions.sourceMap
|
|
21
|
+
sourceMap: tsconfig.compilerOptions.sourceMap,
|
|
25
22
|
},
|
|
26
23
|
coverageOptions: {
|
|
27
|
-
instrumentation: false
|
|
24
|
+
instrumentation: false,
|
|
28
25
|
},
|
|
29
|
-
tsconfig: "./tsconfig.
|
|
30
|
-
}
|
|
31
|
-
})
|
|
32
|
-
}
|
|
26
|
+
tsconfig: "./tsconfig.test.json",
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
};
|
package/package.json
CHANGED
|
@@ -1,36 +1,40 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@utiliread/primitives",
|
|
3
|
-
"version": "1.0.0-
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
"@
|
|
21
|
-
"@types
|
|
22
|
-
"chai": "^4.
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"karma
|
|
27
|
-
"karma-
|
|
28
|
-
"
|
|
29
|
-
"mocha": "^
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"
|
|
35
|
-
|
|
36
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@utiliread/primitives",
|
|
3
|
+
"version": "1.0.0-51",
|
|
4
|
+
"source": "src/index.ts",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.mjs",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"sideEffects": false,
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "parcel build",
|
|
11
|
+
"test": "karma start --single-run --browsers ChromeHeadless karma.config.js",
|
|
12
|
+
"watch": "karma start --auto-watch --browsers ChromeDebugging karma.config.js",
|
|
13
|
+
"chrome": "karma start --auto-watch --browsers Chrome karma.config.js",
|
|
14
|
+
"clean": "rimraf dist"
|
|
15
|
+
},
|
|
16
|
+
"publishConfig": {
|
|
17
|
+
"access": "public"
|
|
18
|
+
},
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"@parcel/packager-ts": "^2.5.0",
|
|
21
|
+
"@parcel/transformer-typescript-types": "^2.5.0",
|
|
22
|
+
"@types/chai": "^4.2.18",
|
|
23
|
+
"@types/luxon": "^2.3.2",
|
|
24
|
+
"@types/mocha": "^9.0.0",
|
|
25
|
+
"chai": "^4.3.4",
|
|
26
|
+
"karma": "^6.3.2",
|
|
27
|
+
"karma-chai": "^0.1.0",
|
|
28
|
+
"karma-chrome-launcher": "^3.1.0",
|
|
29
|
+
"karma-mocha": "^2.0.1",
|
|
30
|
+
"karma-typescript": "^5.5.1",
|
|
31
|
+
"luxon": "^2.1.0",
|
|
32
|
+
"mocha": "^9.1.3",
|
|
33
|
+
"parcel": "^2.5.0",
|
|
34
|
+
"rimraf": "^3.0.2",
|
|
35
|
+
"typescript": "^4.1.5"
|
|
36
|
+
},
|
|
37
|
+
"peerDependencies": {
|
|
38
|
+
"luxon": "^2.1.0"
|
|
39
|
+
}
|
|
40
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { ConsumptionTypeId } from "./consumption-type-id";
|
|
2
|
-
import { RegisterId } from "./register-id";
|
|
3
|
-
import { UnitId } from "./unit-id";
|
|
1
|
+
import type { ConsumptionTypeId } from "./consumption-type-id";
|
|
2
|
+
import type { RegisterId } from "./register-id";
|
|
3
|
+
import type { UnitId } from "./unit-id";
|
|
4
4
|
import { RegisterLibrary } from "./register-library";
|
|
5
|
-
import { RegisterDefinition } from "./register-definition";
|
|
5
|
+
import type { RegisterDefinition } from "./register-definition";
|
|
6
6
|
import { NumberFormatter, invariantDecimalSeparator, localeDecimalSeparator } from "./number-formatter";
|
|
7
7
|
import { RegisterConvention } from "./register-convention";
|
|
8
|
-
import { AggregateId } from "./aggregate-id";
|
|
9
|
-
import { MeasureId } from "./measure-id";
|
|
8
|
+
import type { AggregateId } from "./aggregate-id";
|
|
9
|
+
import type { MeasureId } from "./measure-id";
|
|
10
10
|
import { Step, DayOfWeek } from "./step";
|
|
11
11
|
import { TimeOrRule } from "./time-or-rule";
|
|
12
12
|
import { PrecisionNumber } from "./precision-number";
|
|
13
13
|
import "./repository"; // We need this to get the Repository namespace exported
|
|
14
|
-
import { Repository } from "./repository";
|
|
15
|
-
import { Optional } from "./optional";
|
|
14
|
+
import type { Repository } from "./repository";
|
|
15
|
+
import type { Optional } from "./optional";
|
|
16
16
|
|
|
17
17
|
export {
|
|
18
18
|
AggregateId,
|
|
@@ -25,7 +25,7 @@ describe("toParts and toPrecision", () => {
|
|
|
25
25
|
[123456, 3, { invariantPrecisionString: "1.23e+5", invariantCoefficientString: "1.23", exponent: 5, noOfCoefficientDecimals: 2 }],
|
|
26
26
|
[Number.MAX_VALUE, 3, { invariantPrecisionString: "1.80e+308", invariantCoefficientString: "1.80", exponent: 308, noOfCoefficientDecimals: 2 }],
|
|
27
27
|
[123456, 15, { invariantPrecisionString: "123456.000000000", invariantCoefficientString: "123456.000000000", exponent: 0, noOfCoefficientDecimals: 9 }],
|
|
28
|
-
[0, 5, { invariantPrecisionString: "0.
|
|
28
|
+
[0, 5, { invariantPrecisionString: "0.00000", invariantCoefficientString: "0.00000", exponent: 0, noOfCoefficientDecimals: 5 }],
|
|
29
29
|
[0.000001, 1, { invariantPrecisionString: "0.000001", invariantCoefficientString: "0.000001", exponent: 0, noOfCoefficientDecimals: 6 }],
|
|
30
30
|
[0.000001, 10, { invariantPrecisionString: "0.000001000000000", invariantCoefficientString: "0.000001000000000", exponent: 0, noOfCoefficientDecimals: 15 }],
|
|
31
31
|
[0.0000001, 10, { invariantPrecisionString: "1.000000000e-7", invariantCoefficientString: "1.000000000", exponent: -7, noOfCoefficientDecimals: 9 }],
|
|
@@ -54,7 +54,7 @@ describe("toParts and toPrecision", () => {
|
|
|
54
54
|
|
|
55
55
|
for (const [value, precision, expectedParts] of data) {
|
|
56
56
|
expect(NumberFormatter.toPrecision(value, precision)).to.equal(expectedParts.invariantPrecisionString);
|
|
57
|
-
|
|
57
|
+
|
|
58
58
|
const localePrecisionString = expectedParts.invariantPrecisionString.replace(invariantDecimalSeparator, localeDecimalSeparator);
|
|
59
59
|
expect(NumberFormatter.toLocalePrecision(value, precision)).to.equal(localePrecisionString);
|
|
60
60
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { expect } from "chai";
|
|
2
|
+
import { PrecisionNumber } from "./precision-number";
|
|
3
|
+
|
|
4
|
+
describe("precision-number", () => {
|
|
5
|
+
it("should not parse ''", () => {
|
|
6
|
+
const number = PrecisionNumber.parse("");
|
|
7
|
+
expect(Number.isNaN(number.value)).to.equal(true);
|
|
8
|
+
expect(number.precision).to.equal(0);
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
it("should parse '1'", () => {
|
|
12
|
+
const number = PrecisionNumber.parse("1");
|
|
13
|
+
expect(number.value).to.equal(1);
|
|
14
|
+
expect(number.precision).to.equal(1);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it("should parse '1.'", () => {
|
|
18
|
+
const number = PrecisionNumber.parse("1.");
|
|
19
|
+
expect(number.value).to.equal(1);
|
|
20
|
+
expect(number.precision).to.equal(2);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it("should parse '1.0'", () => {
|
|
24
|
+
const number = PrecisionNumber.parse("1.0");
|
|
25
|
+
expect(number.value).to.equal(1);
|
|
26
|
+
expect(number.precision).to.equal(2);
|
|
27
|
+
});
|
|
28
|
+
});
|
package/src/repository.ts
CHANGED
|
@@ -1,24 +1,26 @@
|
|
|
1
|
-
// This is clearly not correct but it provides some amazing type safety
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
if (name) {
|
|
8
|
-
return <Repository>`${repoOrTeam}/${name}`;
|
|
9
|
-
} else if (repoOrTeam.indexOf("/") > 0) {
|
|
10
|
-
return <Repository>repoOrTeam;
|
|
11
|
-
} else {
|
|
12
|
-
throw new TypeError("Invalid repository format");
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
export function split(repo: Repository) {
|
|
18
|
-
const parts = repo.split("/");
|
|
19
|
-
return {
|
|
20
|
-
team: parts[0],
|
|
21
|
-
name: parts[1],
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
}
|
|
1
|
+
// This is clearly not correct but it provides some amazing type safety
|
|
2
|
+
type Repository = "some/repo";
|
|
3
|
+
|
|
4
|
+
function Repository(repo: string): Repository;
|
|
5
|
+
function Repository(team: string, name: string): Repository;
|
|
6
|
+
function Repository(repoOrTeam: string, name?: string): Repository {
|
|
7
|
+
if (name) {
|
|
8
|
+
return <Repository>`${repoOrTeam}/${name}`;
|
|
9
|
+
} else if (repoOrTeam.indexOf("/") > 0) {
|
|
10
|
+
return <Repository>repoOrTeam;
|
|
11
|
+
} else {
|
|
12
|
+
throw new TypeError("Invalid repository format");
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
namespace Repository {
|
|
17
|
+
export function split(repo: Repository) {
|
|
18
|
+
const parts = repo.split("/");
|
|
19
|
+
return {
|
|
20
|
+
team: parts[0],
|
|
21
|
+
name: parts[1],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export { Repository };
|
package/src/step.ts
CHANGED
|
@@ -12,8 +12,8 @@ export enum DayOfWeek {
|
|
|
12
12
|
Sunday = 7,
|
|
13
13
|
};
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
export function startOf(dateTime: DateTime, step: Step, firstDayOfWeek?: DayOfWeek) {
|
|
15
|
+
namespace Step {
|
|
16
|
+
export function startOf(dateTime: DateTime, step: Step, firstDayOfWeek?: DayOfWeek): DateTime {
|
|
17
17
|
if (step === "week") {
|
|
18
18
|
const value = dateTime.startOf("day").set({ weekday: firstDayOfWeek ?? DayOfWeek.Monday });
|
|
19
19
|
return value > dateTime
|
|
@@ -24,7 +24,7 @@ export namespace Step {
|
|
|
24
24
|
return dateTime.startOf(step);
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
export function asDuration(step: Step, amount = 1): Duration {
|
|
29
29
|
switch (step) {
|
|
30
30
|
case "hour": return Duration.fromObject({ hours: amount });
|
|
@@ -34,4 +34,4 @@ export namespace Step {
|
|
|
34
34
|
case "year": return Duration.fromObject({ years: amount });
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
}
|
|
37
|
+
}
|
package/src/time-or-rule.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { DateTime } from "luxon";
|
|
|
2
2
|
|
|
3
3
|
export type TimeOrRule = Date | DateTime | string;
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
namespace TimeOrRule {
|
|
6
6
|
export function isTime(input: TimeOrRule): input is Date | DateTime {
|
|
7
7
|
return typeof input !== "string";
|
|
8
8
|
}
|
|
@@ -10,8 +10,8 @@ export namespace TimeOrRule {
|
|
|
10
10
|
export function isRule(input: TimeOrRule): input is string {
|
|
11
11
|
return typeof input === "string";
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
export function asJSON(input: TimeOrRule) {
|
|
15
15
|
return isRule(input) ? input : input.toJSON();
|
|
16
16
|
}
|
|
17
|
-
}
|
|
17
|
+
}
|
package/tsconfig.json
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
}
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2018",
|
|
4
|
+
"moduleResolution": "Node",
|
|
5
|
+
"experimentalDecorators": true,
|
|
6
|
+
"emitDecoratorMetadata": true,
|
|
7
|
+
"strict": true,
|
|
8
|
+
"rootDirs": ["src"],
|
|
9
|
+
"lib": ["ES2018", "DOM"],
|
|
10
|
+
"types": ["mocha"]
|
|
11
|
+
},
|
|
12
|
+
"exclude": ["dist"]
|
|
13
|
+
}
|
package/dist/cjs/aggregate-id.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate-id.js","sourceRoot":"","sources":["../../src/aggregate-id.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"array-extensions.js","sourceRoot":"","sources":["../../src/array-extensions.ts"],"names":[],"mappings":";AAMA,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,UAErB,IAA0B;IAE1B,IAAM,SAAS,GAAG,UAAC,KAAc;QAC7B,OAAA,KAAK,YAAY,IAAI;IAArB,CAAqB,CAAC;IAE1B,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"consumption-type-id.js","sourceRoot":"","sources":["../../src/consumption-type-id.ts"],"names":[],"mappings":""}
|
package/dist/cjs/index.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.localeDecimalSeparator = exports.invariantDecimalSeparator = exports.TimeOrRule = exports.Step = exports.Repository = exports.RegisterLibrary = exports.RegisterConvention = exports.PrecisionNumber = exports.NumberFormatter = exports.DayOfWeek = void 0;
|
|
4
|
-
var register_library_1 = require("./register-library");
|
|
5
|
-
Object.defineProperty(exports, "RegisterLibrary", { enumerable: true, get: function () { return register_library_1.RegisterLibrary; } });
|
|
6
|
-
var number_formatter_1 = require("./number-formatter");
|
|
7
|
-
Object.defineProperty(exports, "NumberFormatter", { enumerable: true, get: function () { return number_formatter_1.NumberFormatter; } });
|
|
8
|
-
Object.defineProperty(exports, "invariantDecimalSeparator", { enumerable: true, get: function () { return number_formatter_1.invariantDecimalSeparator; } });
|
|
9
|
-
Object.defineProperty(exports, "localeDecimalSeparator", { enumerable: true, get: function () { return number_formatter_1.localeDecimalSeparator; } });
|
|
10
|
-
var register_convention_1 = require("./register-convention");
|
|
11
|
-
Object.defineProperty(exports, "RegisterConvention", { enumerable: true, get: function () { return register_convention_1.RegisterConvention; } });
|
|
12
|
-
var step_1 = require("./step");
|
|
13
|
-
Object.defineProperty(exports, "Step", { enumerable: true, get: function () { return step_1.Step; } });
|
|
14
|
-
Object.defineProperty(exports, "DayOfWeek", { enumerable: true, get: function () { return step_1.DayOfWeek; } });
|
|
15
|
-
var time_or_rule_1 = require("./time-or-rule");
|
|
16
|
-
Object.defineProperty(exports, "TimeOrRule", { enumerable: true, get: function () { return time_or_rule_1.TimeOrRule; } });
|
|
17
|
-
var precision_number_1 = require("./precision-number");
|
|
18
|
-
Object.defineProperty(exports, "PrecisionNumber", { enumerable: true, get: function () { return precision_number_1.PrecisionNumber; } });
|
|
19
|
-
require("./repository"); // We need this to get the Repository namespace exported
|
|
20
|
-
var repository_1 = require("./repository");
|
|
21
|
-
Object.defineProperty(exports, "Repository", { enumerable: true, get: function () { return repository_1.Repository; } });
|
|
22
|
-
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAGA,uDAAqD;AAuBjD,gGAvBK,kCAAe,OAuBL;AArBnB,uDAAwG;AAgBpG,gGAhBK,kCAAe,OAgBL;AAUf,0GA1BsB,4CAAyB,OA0BtB;AACzB,uGA3BiD,yCAAsB,OA2BjD;AA1B1B,6DAA2D;AAiBvD,mGAjBK,wCAAkB,OAiBL;AAdtB,+BAAyC;AAmBrC,qFAnBK,WAAI,OAmBL;AATJ,0FAVW,gBAAS,OAUX;AATb,+CAA4C;AAmBxC,2FAnBK,yBAAU,OAmBL;AAlBd,uDAAqD;AAWjD,gGAXK,kCAAe,OAWL;AAVnB,wBAAsB,CAAC,wDAAwD;AAC/E,2CAA0C;AActC,2FAdK,uBAAU,OAcL"}
|
package/dist/cjs/measure-id.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"measure-id.js","sourceRoot":"","sources":["../../src/measure-id.ts"],"names":[],"mappings":""}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NumberFormatter = exports.localeDecimalSeparator = exports.invariantDecimalSeparator = void 0;
|
|
4
|
-
exports.invariantDecimalSeparator = (0.1).toString()[1];
|
|
5
|
-
exports.localeDecimalSeparator = (0.1).toLocaleString()[1];
|
|
6
|
-
var Formatter = /** @class */ (function () {
|
|
7
|
-
function Formatter() {
|
|
8
|
-
}
|
|
9
|
-
Formatter.prototype.toPrecision = function (value, precision) {
|
|
10
|
-
if (value === 0) {
|
|
11
|
-
// (0).toPrecision(1) == "0"
|
|
12
|
-
// (0).toPrecision(2) == "0.0"
|
|
13
|
-
// (0).toPrecision(3) == "0.00"
|
|
14
|
-
// However, we want:
|
|
15
|
-
// Formatter.toPrecision(0, 0) == "0"
|
|
16
|
-
// Formatter.toPrecision(0, 1) == "0.0"
|
|
17
|
-
// Formatter.toPrecision(0, 2) == "0.00"
|
|
18
|
-
return value.toPrecision(precision + 1);
|
|
19
|
-
}
|
|
20
|
-
var absValue = Math.abs(value);
|
|
21
|
-
if (absValue < 1) {
|
|
22
|
-
return value.toPrecision(precision);
|
|
23
|
-
}
|
|
24
|
-
var noOfIntegerDigits = Math.round(absValue).toString().length;
|
|
25
|
-
return precision >= noOfIntegerDigits
|
|
26
|
-
? value.toFixed(precision - noOfIntegerDigits)
|
|
27
|
-
: value.toPrecision(precision);
|
|
28
|
-
};
|
|
29
|
-
Formatter.prototype.toLocalePrecision = function (value, precision) {
|
|
30
|
-
return this.toPrecision(value, precision)
|
|
31
|
-
.replace(exports.invariantDecimalSeparator, exports.localeDecimalSeparator);
|
|
32
|
-
};
|
|
33
|
-
Formatter.prototype.toFixed = function (value, precision) {
|
|
34
|
-
var parts = this.getParts(value, precision);
|
|
35
|
-
if (parts.noOfCoefficientDecimals < parts.exponent) {
|
|
36
|
-
var number = parts.invariantCoefficientString.replace(exports.invariantDecimalSeparator, "");
|
|
37
|
-
var zeros = parts.exponent - parts.noOfCoefficientDecimals;
|
|
38
|
-
return "" + number + "0".repeat(zeros);
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
return parts.invariantPrecisionString;
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
Formatter.prototype.toLocaleFixed = function (value, precision) {
|
|
45
|
-
return this.toFixed(value, precision)
|
|
46
|
-
.replace(exports.invariantDecimalSeparator, exports.localeDecimalSeparator);
|
|
47
|
-
};
|
|
48
|
-
Formatter.prototype.getParts = function (value, precision) {
|
|
49
|
-
var precisionString = this.toPrecision(value, precision);
|
|
50
|
-
if (precisionString.indexOf("e") >= 0) {
|
|
51
|
-
var match = /(.*)e([\+-]\d+)$/.exec(precisionString);
|
|
52
|
-
var coefficientString = match[1];
|
|
53
|
-
var exponent = parseInt(match[2]);
|
|
54
|
-
var decimalSeparatorIndex = coefficientString.indexOf(exports.invariantDecimalSeparator);
|
|
55
|
-
var noOfCoefficientDecimals = decimalSeparatorIndex >= 0
|
|
56
|
-
? coefficientString.length - decimalSeparatorIndex - 1
|
|
57
|
-
: 0;
|
|
58
|
-
return {
|
|
59
|
-
invariantPrecisionString: precisionString,
|
|
60
|
-
invariantCoefficientString: coefficientString,
|
|
61
|
-
exponent: exponent,
|
|
62
|
-
noOfCoefficientDecimals: noOfCoefficientDecimals,
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
var decimalSeparatorIndex = precisionString.indexOf(exports.invariantDecimalSeparator);
|
|
67
|
-
var noOfCoefficientDecimals = decimalSeparatorIndex >= 0
|
|
68
|
-
? precisionString.length - decimalSeparatorIndex - 1
|
|
69
|
-
: 0;
|
|
70
|
-
return {
|
|
71
|
-
invariantPrecisionString: precisionString,
|
|
72
|
-
invariantCoefficientString: precisionString,
|
|
73
|
-
exponent: 0,
|
|
74
|
-
noOfCoefficientDecimals: noOfCoefficientDecimals,
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
return Formatter;
|
|
79
|
-
}());
|
|
80
|
-
exports.NumberFormatter = new Formatter();
|
|
81
|
-
//# sourceMappingURL=number-formatter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"number-formatter.js","sourceRoot":"","sources":["../../src/number-formatter.ts"],"names":[],"mappings":";;;AAAa,QAAA,yBAAyB,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AAChD,QAAA,sBAAsB,GAAG,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;AAShE;IAAA;IA2EA,CAAC;IA1EU,+BAAW,GAAlB,UAAmB,KAAa,EAAE,SAAiB;QAC/C,IAAI,KAAK,KAAK,CAAC,EAAE;YACb,4BAA4B;YAC5B,8BAA8B;YAC9B,+BAA+B;YAC/B,oBAAoB;YACpB,qCAAqC;YACrC,uCAAuC;YACvC,wCAAwC;YACxC,OAAO,KAAK,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;SAC3C;QACD,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,QAAQ,GAAG,CAAC,EAAE;YACd,OAAO,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;SACvC;QAED,IAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;QACjE,OAAO,SAAS,IAAI,iBAAiB;YACjC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,GAAG,iBAAiB,CAAC;YAC9C,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAEM,qCAAiB,GAAxB,UAAyB,KAAa,EAAE,SAAiB;QACrD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC;aACpC,OAAO,CAAC,iCAAyB,EAAE,8BAAsB,CAAC,CAAC;IACpE,CAAC;IAEM,2BAAO,GAAd,UAAe,KAAa,EAAE,SAAiB;QAC3C,IAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC9C,IAAI,KAAK,CAAC,uBAAuB,GAAG,KAAK,CAAC,QAAQ,EAAE;YAChD,IAAM,MAAM,GAAG,KAAK,CAAC,0BAA0B,CAAC,OAAO,CAAC,iCAAyB,EAAE,EAAE,CAAC,CAAC;YACvF,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,uBAAuB,CAAC;YAC7D,OAAO,KAAG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAG,CAAC;SAC1C;aACI;YACD,OAAO,KAAK,CAAC,wBAAwB,CAAC;SACzC;IACL,CAAC;IAEM,iCAAa,GAApB,UAAqB,KAAa,EAAE,SAAiB;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC;aAChC,OAAO,CAAC,iCAAyB,EAAE,8BAAsB,CAAC,CAAC;IACpE,CAAC;IAEM,4BAAQ,GAAf,UAAgB,KAAa,EAAE,SAAiB;QAC5C,IAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC3D,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACnC,IAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAE,CAAC;YACxD,IAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACnC,IAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,IAAM,qBAAqB,GAAG,iBAAiB,CAAC,OAAO,CAAC,iCAAyB,CAAC,CAAC;YACnF,IAAM,uBAAuB,GAAG,qBAAqB,IAAI,CAAC;gBACtD,CAAC,CAAC,iBAAiB,CAAC,MAAM,GAAG,qBAAqB,GAAG,CAAC;gBACtD,CAAC,CAAC,CAAC,CAAC;YACR,OAAO;gBACH,wBAAwB,EAAE,eAAe;gBACzC,0BAA0B,EAAE,iBAAiB;gBAC7C,QAAQ,UAAA;gBACR,uBAAuB,yBAAA;aAC1B,CAAC;SACL;aACI;YACD,IAAM,qBAAqB,GAAG,eAAe,CAAC,OAAO,CAAC,iCAAyB,CAAC,CAAC;YACjF,IAAM,uBAAuB,GAAG,qBAAqB,IAAI,CAAC;gBACtD,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,qBAAqB,GAAG,CAAC;gBACpD,CAAC,CAAC,CAAC,CAAC;YACR,OAAO;gBACH,wBAAwB,EAAE,eAAe;gBACzC,0BAA0B,EAAE,eAAe;gBAC3C,QAAQ,EAAE,CAAC;gBACX,uBAAuB,yBAAA;aAC1B,CAAC;SACL;IACL,CAAC;IACL,gBAAC;AAAD,CAAC,AA3ED,IA2EC;AAEY,QAAA,eAAe,GAAG,IAAI,SAAS,EAAE,CAAC"}
|