@ibgib/ts-gib 0.4.9
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/.vscode/launch.json +24 -0
- package/.vscode/settings.json +34 -0
- package/.vscode/tasks.json +37 -0
- package/CHANGELOG.md +159 -0
- package/README.md +502 -0
- package/dist/V1/constants.d.mts +22 -0
- package/dist/V1/constants.d.mts.map +1 -0
- package/dist/V1/constants.mjs +21 -0
- package/dist/V1/constants.mjs.map +1 -0
- package/dist/V1/factory.d.mts +23 -0
- package/dist/V1/factory.d.mts.map +1 -0
- package/dist/V1/factory.mjs +78 -0
- package/dist/V1/factory.mjs.map +1 -0
- package/dist/V1/index.d.mts +6 -0
- package/dist/V1/index.d.mts.map +1 -0
- package/dist/V1/index.mjs +6 -0
- package/dist/V1/index.mjs.map +1 -0
- package/dist/V1/sha256v1.d.mts +19 -0
- package/dist/V1/sha256v1.d.mts.map +1 -0
- package/dist/V1/sha256v1.mjs +86 -0
- package/dist/V1/sha256v1.mjs.map +1 -0
- package/dist/V1/transforms/fork.d.mts +16 -0
- package/dist/V1/transforms/fork.d.mts.map +1 -0
- package/dist/V1/transforms/fork.mjs +111 -0
- package/dist/V1/transforms/fork.mjs.map +1 -0
- package/dist/V1/transforms/index.d.mts +5 -0
- package/dist/V1/transforms/index.d.mts.map +1 -0
- package/dist/V1/transforms/index.mjs +5 -0
- package/dist/V1/transforms/index.mjs.map +1 -0
- package/dist/V1/transforms/mut8.d.mts +50 -0
- package/dist/V1/transforms/mut8.d.mts.map +1 -0
- package/dist/V1/transforms/mut8.mjs +246 -0
- package/dist/V1/transforms/mut8.mjs.map +1 -0
- package/dist/V1/transforms/rel8.d.mts +14 -0
- package/dist/V1/transforms/rel8.d.mts.map +1 -0
- package/dist/V1/transforms/rel8.mjs +176 -0
- package/dist/V1/transforms/rel8.mjs.map +1 -0
- package/dist/V1/transforms/transform-helper.d.mts +92 -0
- package/dist/V1/transforms/transform-helper.d.mts.map +1 -0
- package/dist/V1/transforms/transform-helper.mjs +189 -0
- package/dist/V1/transforms/transform-helper.mjs.map +1 -0
- package/dist/V1/types.d.mts +79 -0
- package/dist/V1/types.d.mts.map +1 -0
- package/dist/V1/types.mjs +12 -0
- package/dist/V1/types.mjs.map +1 -0
- package/dist/helper.d.mts +77 -0
- package/dist/helper.d.mts.map +1 -0
- package/dist/helper.mjs +179 -0
- package/dist/helper.mjs.map +1 -0
- package/dist/index.cjs +4 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +4 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +4 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +4 -0
- package/dist/index.mjs.map +1 -0
- package/dist/types.d.mts +242 -0
- package/dist/types.d.mts.map +1 -0
- package/dist/types.mjs +2 -0
- package/dist/types.mjs.map +1 -0
- package/jasmine-browser.json +18 -0
- package/jasmine.json +6 -0
- package/package.json +61 -0
- package/src/V1/constants.mts +23 -0
- package/src/V1/factory.mts +110 -0
- package/src/V1/factory.spec.mts +162 -0
- package/src/V1/index.mts +5 -0
- package/src/V1/sha256v1.mts +85 -0
- package/src/V1/sha256v1.spec.mts +221 -0
- package/src/V1/transforms/fork.mts +100 -0
- package/src/V1/transforms/fork.spec.mts +410 -0
- package/src/V1/transforms/index.mts +4 -0
- package/src/V1/transforms/mut8.mts +239 -0
- package/src/V1/transforms/mut8.spec.mts +656 -0
- package/src/V1/transforms/rel8.mts +173 -0
- package/src/V1/transforms/rel8.spec.mts +556 -0
- package/src/V1/transforms/transform-helper.mts +263 -0
- package/src/V1/transforms/transform-helper.spec.mts +45 -0
- package/src/V1/types.mts +84 -0
- package/src/helper.mts +192 -0
- package/src/helper.spec.mts +127 -0
- package/src/index.cts +3 -0
- package/src/index.mts +3 -0
- package/src/types.mts +242 -0
- package/tsconfig.json +15 -0
- package/tsconfig.test.json +10 -0
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { getIbGibAddr, clone, getTimestamp } from '../../helper.mjs';
|
|
2
|
+
import { Rel8n } from '../types.mjs';
|
|
3
|
+
import { IBGIB_DELIMITER, FORBIDDEN_ADD_RENAME_REMOVE_REL8N_NAMES } from '../constants.mjs';
|
|
4
|
+
import { buildDna, getGib, isPrimitive } from './transform-helper.mjs';
|
|
5
|
+
/**
|
|
6
|
+
* Original-ish V1 transform behavior.
|
|
7
|
+
*
|
|
8
|
+
* NOTE:
|
|
9
|
+
* This is NOT going to do the plan^gib stuff ATM.
|
|
10
|
+
* Also this does NOT add any identity information ATM.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Relate (and/or unrelate) other ibGib(s), thus mutating it **extrinsically**.
|
|
14
|
+
*/
|
|
15
|
+
export async function rel8(opts) {
|
|
16
|
+
const { noTimestamp, dna, linkedRel8ns, rel8nsToAddByAddr, rel8nsToRemoveByAddr, type = 'rel8' } = opts;
|
|
17
|
+
let src = opts.src;
|
|
18
|
+
const lc = '[rel8_v1]';
|
|
19
|
+
if (type !== 'rel8') {
|
|
20
|
+
throw new Error(`${lc} not a rel8 transform.`);
|
|
21
|
+
}
|
|
22
|
+
if (!opts.type) {
|
|
23
|
+
opts.type = 'rel8';
|
|
24
|
+
}
|
|
25
|
+
// #region validation
|
|
26
|
+
if (type !== 'rel8') {
|
|
27
|
+
throw new Error(`${lc} not a rel8 transform.`);
|
|
28
|
+
}
|
|
29
|
+
if (!opts.type) {
|
|
30
|
+
opts.type = 'rel8';
|
|
31
|
+
}
|
|
32
|
+
if (!src) {
|
|
33
|
+
throw new Error(`${lc} src required.`);
|
|
34
|
+
}
|
|
35
|
+
if (!src.ib) {
|
|
36
|
+
throw new Error(`${lc} src.ib required.`);
|
|
37
|
+
}
|
|
38
|
+
if (src.ib.includes(IBGIB_DELIMITER)) {
|
|
39
|
+
throw new Error(`${lc} ib can't contain hardcoded delimiter (${IBGIB_DELIMITER}) right now.`);
|
|
40
|
+
}
|
|
41
|
+
if (!src.gib) {
|
|
42
|
+
throw new Error(`${lc} src.gib required.`);
|
|
43
|
+
}
|
|
44
|
+
// if (!src.gib || src.gib === GIB) { throw new Error(`${lc} cannot relate to primitive ibGib.`); }
|
|
45
|
+
if (isPrimitive({ ibGib: src })) {
|
|
46
|
+
throw new Error(`${lc} cannot relate/unrelate primitive ibgib`);
|
|
47
|
+
}
|
|
48
|
+
// if neither add nor remove specified, what are we even doing?
|
|
49
|
+
const isAdding = rel8nsToAddByAddr && Object.keys(rel8nsToAddByAddr).length > 0;
|
|
50
|
+
const isRemoving = rel8nsToRemoveByAddr && Object.keys(rel8nsToRemoveByAddr).length > 0;
|
|
51
|
+
if (!(isAdding || isRemoving)) {
|
|
52
|
+
throw new Error(`${lc} gotta provide relations to either add or remove.`);
|
|
53
|
+
}
|
|
54
|
+
const srcAddr = getIbGibAddr({ ib: src.ib, gib: src.gib });
|
|
55
|
+
if (opts.srcAddr && srcAddr !== opts.srcAddr) {
|
|
56
|
+
throw new Error(`${lc} srcAddr from src does not equal opts.srcAddr`);
|
|
57
|
+
}
|
|
58
|
+
opts.srcAddr = srcAddr;
|
|
59
|
+
// validate all ibgib addresses to add/remove
|
|
60
|
+
const fnValidIbGibAddr = (s) => {
|
|
61
|
+
// for now, only requiring a single character and trailing delim.
|
|
62
|
+
// i.e. primitive with implied 'gib'
|
|
63
|
+
return s && typeof (s) === 'string' && s.length >= 2 &&
|
|
64
|
+
s.includes('^') && s.split('^')[0].length >= 1;
|
|
65
|
+
};
|
|
66
|
+
Object.keys(rel8nsToAddByAddr || {})
|
|
67
|
+
.map(x => (rel8nsToAddByAddr || {})[x])
|
|
68
|
+
.forEach(rel8ds => {
|
|
69
|
+
if (!(rel8ds && rel8ds.every(rel8d => fnValidIbGibAddr(rel8d)))) {
|
|
70
|
+
throw new Error(`${lc} Invalid rel8n attempt. Must be valid ibGibs. Did you include a delimiter (^)?`);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
Object.keys(rel8nsToRemoveByAddr || {})
|
|
74
|
+
.map(x => (rel8nsToRemoveByAddr || {})[x])
|
|
75
|
+
.forEach(rel8ds => {
|
|
76
|
+
if (!(rel8ds && rel8ds.every(rel8d => fnValidIbGibAddr(rel8d)))) {
|
|
77
|
+
throw new Error(`${lc} Invalid remove rel8n attempt. Must be valid ibGibs. Did you include a delimiter (^)?`);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
// #endregion validation
|
|
81
|
+
// we want to forget `src` proper very quickly because it may have other
|
|
82
|
+
// non-IbGib properties that are not relevant to our transform.
|
|
83
|
+
let dto = { ib: src.ib, gib: src.gib, };
|
|
84
|
+
if (src.data && Object.keys(src.data).length > 0) {
|
|
85
|
+
dto.data = src.data;
|
|
86
|
+
}
|
|
87
|
+
if (src.rel8ns && Object.keys(src.rel8ns).length > 0) {
|
|
88
|
+
dto.rel8ns = src.rel8ns;
|
|
89
|
+
}
|
|
90
|
+
src = dto;
|
|
91
|
+
const newIbGib = clone(src);
|
|
92
|
+
const data = clone(src.data || {});
|
|
93
|
+
if (opts.nCounter || Object.keys(data).includes('n')) {
|
|
94
|
+
if (Object.keys(data).includes('n')) {
|
|
95
|
+
if (Number.isInteger(data.n)) {
|
|
96
|
+
if (data.n >= 0) {
|
|
97
|
+
data.n = data.n + 1;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
console.warn(`${lc} data.n is less than 0, which is unexpected. Resetting data.n to 0.`);
|
|
101
|
+
data.n = 0;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
throw new Error('cannot increment nCounter because data.n is not a number.');
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
data.n = 0;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (!noTimestamp) {
|
|
113
|
+
data.timestamp = getTimestamp();
|
|
114
|
+
}
|
|
115
|
+
const rel8ns = clone(src.rel8ns || {});
|
|
116
|
+
Object.keys(rel8nsToAddByAddr || {}).forEach(rel8nName => {
|
|
117
|
+
if (FORBIDDEN_ADD_RENAME_REMOVE_REL8N_NAMES.includes(rel8nName)) {
|
|
118
|
+
throw new Error(`${lc} Cannot manually add relationship: ${rel8nName}.`);
|
|
119
|
+
}
|
|
120
|
+
const existingRel8d = rel8ns[rel8nName] || [];
|
|
121
|
+
const toAddRel8d = rel8nsToAddByAddr[rel8nName];
|
|
122
|
+
const newRel8d = toAddRel8d.filter(x => !existingRel8d.includes(x));
|
|
123
|
+
rel8ns[rel8nName] = existingRel8d.concat(newRel8d);
|
|
124
|
+
});
|
|
125
|
+
Object.keys(rel8nsToRemoveByAddr || {}).forEach(rel8nName => {
|
|
126
|
+
if (FORBIDDEN_ADD_RENAME_REMOVE_REL8N_NAMES.includes(rel8nName)) {
|
|
127
|
+
throw new Error(`${lc} Cannot manually remove relationship: ${rel8nName}.`);
|
|
128
|
+
}
|
|
129
|
+
const existingRel8d = rel8ns[rel8nName] || [];
|
|
130
|
+
const toRemoveRel8d = rel8nsToRemoveByAddr[rel8nName] || [];
|
|
131
|
+
const prunedRel8d = existingRel8d.filter((x) => !toRemoveRel8d.includes(x));
|
|
132
|
+
if (prunedRel8d.length > 0) {
|
|
133
|
+
rel8ns[rel8nName] = prunedRel8d;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
delete rel8ns[rel8nName];
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
rel8ns.past = (rel8ns.past || []).concat([srcAddr]);
|
|
140
|
+
(linkedRel8ns || [])
|
|
141
|
+
.filter(linkedRel8nName => Object.keys(rel8ns).includes(linkedRel8nName))
|
|
142
|
+
.filter(linkedRel8nName => (rel8ns[linkedRel8nName] || []).length > 1)
|
|
143
|
+
.forEach(linkedRel8nName => {
|
|
144
|
+
// take the last item only, and put it in an array
|
|
145
|
+
let initialLength = rel8ns[linkedRel8nName].length;
|
|
146
|
+
rel8ns[linkedRel8nName] = [rel8ns[linkedRel8nName][initialLength - 1]];
|
|
147
|
+
});
|
|
148
|
+
// rel8ns.past = linkedRel8ns?.includes(Rel8n.past) ?
|
|
149
|
+
// [srcAddr] :
|
|
150
|
+
// (rel8ns.past || []).concat([srcAddr]);
|
|
151
|
+
if (data.isTjp) {
|
|
152
|
+
let tjpRel8n = rel8ns['tjp'] || [];
|
|
153
|
+
tjpRel8n.push(srcAddr);
|
|
154
|
+
rel8ns.tjp = tjpRel8n;
|
|
155
|
+
delete data.isTjp;
|
|
156
|
+
}
|
|
157
|
+
newIbGib.data = data;
|
|
158
|
+
newIbGib.rel8ns = rel8ns;
|
|
159
|
+
// newIbGib.gib = await sha256v1(newIbGib, '');
|
|
160
|
+
const hasTjp = (rel8ns.tjp?.length ?? 0) > 0;
|
|
161
|
+
let transformDna = null;
|
|
162
|
+
if (dna) {
|
|
163
|
+
transformDna = await buildDna(opts);
|
|
164
|
+
const dnaAddr = getIbGibAddr({ ibGib: transformDna });
|
|
165
|
+
rel8ns.dna = linkedRel8ns?.includes(Rel8n.dna) ?
|
|
166
|
+
rel8ns.dna = [dnaAddr] :
|
|
167
|
+
rel8ns.dna = (rel8ns.dna || []).concat(dnaAddr);
|
|
168
|
+
}
|
|
169
|
+
newIbGib.gib = await getGib({ ibGib: newIbGib, hasTjp });
|
|
170
|
+
const result = { newIbGib };
|
|
171
|
+
if (transformDna) {
|
|
172
|
+
result.dnas = [transformDna];
|
|
173
|
+
}
|
|
174
|
+
return result;
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=rel8.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rel8.mjs","sourceRoot":"","sources":["../../../src/V1/transforms/rel8.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { TransformOpts, IbGib, Gib, IbGibAddr } from "../../types.mjs";
|
|
2
|
+
import { GibInfo, IbGib_V1 } from "../types.mjs";
|
|
3
|
+
export declare function buildDna<TSrc extends IbGib_V1, TOpts extends TransformOpts<TSrc>>(opts: TOpts): Promise<IbGib_V1>;
|
|
4
|
+
export declare function isDna({ ibGib }: {
|
|
5
|
+
ibGib: IbGib;
|
|
6
|
+
}): boolean;
|
|
7
|
+
export declare function isPrimitive({ ibGib, gib }: {
|
|
8
|
+
ibGib?: IbGib_V1;
|
|
9
|
+
gib?: Gib;
|
|
10
|
+
}): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Generates the gib of a given `ibGib` depending on
|
|
13
|
+
* @returns gib - either bare hash for those with no tjp; or tjp-scoped hash; or 'gib' for primitives
|
|
14
|
+
*/
|
|
15
|
+
export declare function getGib({ ibGib, hasTjp, tjpAddr, gibDelimiter, isPrimitive, hashAlgorithm, }: {
|
|
16
|
+
/**
|
|
17
|
+
* We'll take the `ib`, `data`, and `rel8ns` from this
|
|
18
|
+
*/
|
|
19
|
+
ibGib: IbGib_V1;
|
|
20
|
+
/**
|
|
21
|
+
* If true, then we'll treat this as having a tjp.
|
|
22
|
+
* If falsy, then we'll check the internals of the ibGib to see if it has a tjp.
|
|
23
|
+
*/
|
|
24
|
+
hasTjp?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* @deprecated
|
|
27
|
+
*
|
|
28
|
+
* IGNORED
|
|
29
|
+
*
|
|
30
|
+
* This is now always searched for in the ibGib itself.
|
|
31
|
+
*/
|
|
32
|
+
tjpAddr?: IbGibAddr;
|
|
33
|
+
/**
|
|
34
|
+
* What to use as the delimiter for the `gib`.
|
|
35
|
+
*
|
|
36
|
+
* @default GIB_DELIMITER
|
|
37
|
+
*
|
|
38
|
+
* ## notes
|
|
39
|
+
*
|
|
40
|
+
* This is not the same thing necessarily as the ib^gib delimiter.
|
|
41
|
+
* In fact the default gibDelimiter ATOW ('.') is different than the
|
|
42
|
+
* default ib^gib delimiter ('^').
|
|
43
|
+
*/
|
|
44
|
+
gibDelimiter?: string;
|
|
45
|
+
/**
|
|
46
|
+
* If this is primitive, then the `gib` is always GIB ("gib" string literal).
|
|
47
|
+
*/
|
|
48
|
+
isPrimitive?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Hash algorithm to use when calculating the gib hash of the ibgib datum.
|
|
51
|
+
*
|
|
52
|
+
* ## notes
|
|
53
|
+
*
|
|
54
|
+
* * I'm just including this now to show where we will expand when working with
|
|
55
|
+
* multiple hash algorithms. For now though, in all of V1, we use 'SHA-256'
|
|
56
|
+
* when calculating the gib hashes. This is why I'm hard-coding the type
|
|
57
|
+
* here instead of using this lib's `HashAlgorithm` type.
|
|
58
|
+
* * This param is actually ignored ATOW.
|
|
59
|
+
* * In my current consuming use case (ionic-gib), though,
|
|
60
|
+
* I am indeed using SHA-512 when encrypting using encrypt-gib. I only note
|
|
61
|
+
* this in case someone sees "SHA-512" code somewhere and is confused.
|
|
62
|
+
*/
|
|
63
|
+
hashAlgorithm?: 'SHA-256';
|
|
64
|
+
}): Promise<string>;
|
|
65
|
+
/**
|
|
66
|
+
* Parses gib (either via `gib` param or `ibGibAddr.gib`) and returns information
|
|
67
|
+
* about it.
|
|
68
|
+
*
|
|
69
|
+
* @returns Information about the given `gib` (or `gib` extracted from `ibGibAddr`)
|
|
70
|
+
*/
|
|
71
|
+
export declare function getGibInfo({ ibGibAddr, gib, gibDelimiter, }: {
|
|
72
|
+
/**
|
|
73
|
+
* If given, will extract `gib` from this.
|
|
74
|
+
*/
|
|
75
|
+
ibGibAddr?: IbGibAddr;
|
|
76
|
+
/**
|
|
77
|
+
* `gib` to analyze.
|
|
78
|
+
*/
|
|
79
|
+
gib?: Gib;
|
|
80
|
+
/**
|
|
81
|
+
* Delimiter among pieces of gib, if applicable.
|
|
82
|
+
*
|
|
83
|
+
* @default GIB_DELIMITER (ATOW '.')
|
|
84
|
+
*
|
|
85
|
+
* ## notes
|
|
86
|
+
*
|
|
87
|
+
* Some `gib` values will include tjp information, while others
|
|
88
|
+
* are just the hash.
|
|
89
|
+
*/
|
|
90
|
+
gibDelimiter?: string;
|
|
91
|
+
}): GibInfo;
|
|
92
|
+
//# sourceMappingURL=transform-helper.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-helper.d.mts","sourceRoot":"","sources":["../../../src/V1/transforms/transform-helper.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAM,SAAS,EAAG,MAAM,iBAAiB,CAAC;AAG5E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAG,MAAM,cAAc,CAAC;AAGlD,wBAAsB,QAAQ,CAAC,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,EACnF,IAAI,EAAE,KAAK,GACZ,OAAO,CAAC,QAAQ,CAAC,CAgCnB;AAED,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,OAAO,CAsB1D;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,QAAQ,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,OAAO,CASpF;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAAC,EACzB,KAAK,EACL,MAAM,EACN,OAAO,EACP,YAAY,EACZ,WAAW,EACX,aAAa,GAChB,EAAE;IACC;;OAEG;IACH,KAAK,EAAE,QAAQ,CAAC;IAChB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;;;;;;;;OAUG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;CAC7B,GAAG,OAAO,CAAC,MAAM,CAAC,CA0DlB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EACvB,SAAS,EACT,GAAG,EACH,YAAY,GACf,EAAE;IACC;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;OAEG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC;IACV;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAmCV"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { clone, getIbGibAddr, getIbAndGib, extractErrorMsg, } from "../../helper.mjs";
|
|
2
|
+
import { sha256v1, } from "../sha256v1.mjs";
|
|
3
|
+
import { IBGIB_DELIMITER, GIB, GIB_DELIMITER } from "../constants.mjs";
|
|
4
|
+
export async function buildDna(opts) {
|
|
5
|
+
const transformData = clone(opts);
|
|
6
|
+
let lc = `[${buildDna.name}]`;
|
|
7
|
+
// remove references to the srcAddr, as this will be captured
|
|
8
|
+
// by the ibGib's `past` rel8n. This way, we can reapply dna
|
|
9
|
+
// to different src's more easily, as well as have less unique dna
|
|
10
|
+
if (transformData.srcAddr) {
|
|
11
|
+
delete transformData.srcAddr;
|
|
12
|
+
}
|
|
13
|
+
// remove all references to actual objects in this, we just
|
|
14
|
+
// want the data. ATOW, src is a reference to the src object
|
|
15
|
+
// and we only want the srcAddr
|
|
16
|
+
delete transformData.src;
|
|
17
|
+
// dna is never timestamped or uniquely identified hmm...
|
|
18
|
+
// or rel8d to anything...hmmm
|
|
19
|
+
// so much dna, best to minimize though of course we dont
|
|
20
|
+
// want to prematurely optimize...but there's a looooot of dna.
|
|
21
|
+
// best to share/reuse as much as possible.
|
|
22
|
+
const result = {
|
|
23
|
+
ib: transformData.type,
|
|
24
|
+
data: transformData,
|
|
25
|
+
rel8ns: {
|
|
26
|
+
ancestor: [
|
|
27
|
+
`${transformData.type.toString()}${IBGIB_DELIMITER}${GIB}` // e.g. fork^gib
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
result.gib = await sha256v1(result);
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
export function isDna({ ibGib }) {
|
|
35
|
+
const lc = `[${isDna.name}]`;
|
|
36
|
+
try {
|
|
37
|
+
if (!ibGib) {
|
|
38
|
+
throw new Error(`ibGib required.`);
|
|
39
|
+
}
|
|
40
|
+
// console.log(`${lc} ibGib: ${pretty(ibGib)}`);
|
|
41
|
+
// ancestor is known transform is the best way for v1 ATOW
|
|
42
|
+
const knownTransformPrimitiveAddrs = ['fork', 'mut8', 'rel8', 'plan'].map(x => `${x}^${GIB}`); // plan from prev versions
|
|
43
|
+
const hasTransformAncestor = (ibGib.rel8ns) &&
|
|
44
|
+
(ibGib.rel8ns.ancestor) &&
|
|
45
|
+
(Array.isArray(ibGib.rel8ns.ancestor)) &&
|
|
46
|
+
(ibGib.rel8ns.ancestor).
|
|
47
|
+
some((x) => knownTransformPrimitiveAddrs.includes(x));
|
|
48
|
+
return hasTransformAncestor || false;
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export function isPrimitive({ ibGib, gib }) {
|
|
56
|
+
if (ibGib) {
|
|
57
|
+
return isPrimitive({ gib: ibGib.gib });
|
|
58
|
+
}
|
|
59
|
+
else if (gib) {
|
|
60
|
+
return gib === GIB;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// falsy gib means it's primitive or a programming error...hmm
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Generates the gib of a given `ibGib` depending on
|
|
69
|
+
* @returns gib - either bare hash for those with no tjp; or tjp-scoped hash; or 'gib' for primitives
|
|
70
|
+
*/
|
|
71
|
+
export async function getGib({ ibGib, hasTjp, tjpAddr, gibDelimiter, isPrimitive, hashAlgorithm, }) {
|
|
72
|
+
const lc = `[${getGib.name}]`;
|
|
73
|
+
try {
|
|
74
|
+
if (!ibGib) {
|
|
75
|
+
throw new Error(`ibGib required. (E: 17d073226b9d42fd841e5a94b065ef21)`);
|
|
76
|
+
}
|
|
77
|
+
if (isPrimitive) {
|
|
78
|
+
return GIB;
|
|
79
|
+
}
|
|
80
|
+
const ibGibHash = await sha256v1(ibGib, '');
|
|
81
|
+
const rel8ns = ibGib.rel8ns ?? {};
|
|
82
|
+
const data = ibGib.data ?? {};
|
|
83
|
+
gibDelimiter = gibDelimiter || GIB_DELIMITER;
|
|
84
|
+
if (!hasTjp) {
|
|
85
|
+
hasTjp = (rel8ns.tjp?.length ?? []) > 0 || data.isTjp || false;
|
|
86
|
+
}
|
|
87
|
+
if (hasTjp) {
|
|
88
|
+
let tjpAddrGib;
|
|
89
|
+
if (rel8ns.tjp) {
|
|
90
|
+
if (rel8ns.tjp.length === 1) {
|
|
91
|
+
if (rel8ns.tjp[0]) { // checking for empty string
|
|
92
|
+
tjpAddr = rel8ns.tjp[0];
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
throw new Error(`rel8ns.tjp[0] is falsy. (E: ed879d2b039543f8b1902e8b7b5a5a7b)`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else if (rel8ns.tjp.length > 1) {
|
|
99
|
+
if (rel8ns.tjp[rel8ns.tjp.length - 1]) {
|
|
100
|
+
console.warn(`${lc} found more than one tjp addr...only expecting 1 ATOW. (W: 10ed43f716e743e0afd1954f1ab46789)`);
|
|
101
|
+
tjpAddr = rel8ns.tjp[rel8ns.tjp.length - 1];
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
throw new Error(`multiple tjp addrs, and the last (most recent) one is falsy. (E: bc835dc89be24075bba8b2b6616ea069)`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
// empty rel8ns.tjp array?
|
|
109
|
+
throw new Error(`hasTjp is true but rel8ns.tjp is empty array. (E: d08b2f9e86494814b5e7d7b4602b2ab7)`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else if (data.isTjp) {
|
|
113
|
+
// the ibGib itself is the tjp
|
|
114
|
+
tjpAddr = getIbGibAddr({ ib: ibGib.ib, gib: ibGibHash });
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
throw new Error(`hasTjp is true, but both ibGib.rel8ns.tjp and ibGib.data.isTjp are falsy. (E: 4e246897e52044789594d853bb5b66ee)`);
|
|
118
|
+
}
|
|
119
|
+
tjpAddrGib = tjpAddr ? getIbAndGib({ ibGibAddr: tjpAddr }).gib : undefined;
|
|
120
|
+
if (tjpAddrGib) {
|
|
121
|
+
// if the ibGib IS the tjp, then the gib is only the hash
|
|
122
|
+
// if the ibGib is NOT the tjp, then the gib is the hash plus
|
|
123
|
+
// tjpGib. note in the future, if multiple tjps are going, then
|
|
124
|
+
// tjpAddrGib itself may have another delim inside it, so we
|
|
125
|
+
// will end up with a gib with multiple delimiters.
|
|
126
|
+
return data.isTjp ? ibGibHash : `${ibGibHash}${GIB_DELIMITER}${tjpAddrGib}`;
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
throw new Error(`hasTjp is true but could not find tjpAddrGib. (E: 1863df626b754744a1d431a683cb0ba0)`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
// no tjp, so gib is just the hash
|
|
134
|
+
return ibGibHash;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
139
|
+
throw error;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Parses gib (either via `gib` param or `ibGibAddr.gib`) and returns information
|
|
144
|
+
* about it.
|
|
145
|
+
*
|
|
146
|
+
* @returns Information about the given `gib` (or `gib` extracted from `ibGibAddr`)
|
|
147
|
+
*/
|
|
148
|
+
export function getGibInfo({ ibGibAddr, gib, gibDelimiter, }) {
|
|
149
|
+
const lc = `[${getGibInfo.name}]`;
|
|
150
|
+
try {
|
|
151
|
+
if (!ibGibAddr && !gib) {
|
|
152
|
+
throw new Error(`Either ibGibAddr or gib required. (E: 25e3dcbe63cd44909032df12af9df75e)`);
|
|
153
|
+
}
|
|
154
|
+
gib = gib || getIbAndGib({ ibGibAddr }).gib;
|
|
155
|
+
if (gib === GIB) {
|
|
156
|
+
return { isPrimitive: true };
|
|
157
|
+
}
|
|
158
|
+
gibDelimiter = gibDelimiter ?? GIB_DELIMITER;
|
|
159
|
+
if (gib.includes(gibDelimiter)) {
|
|
160
|
+
const pieces = gib.split(gibDelimiter);
|
|
161
|
+
if (pieces.some(p => p === '')) {
|
|
162
|
+
throw new Error(`unexpected gib that contains gibDelimiter (${gibDelimiter}) but has at least one piece with empty string. (E: 75a94280045541009ee68182d12d3449)`);
|
|
163
|
+
}
|
|
164
|
+
const piecesCount = pieces.length;
|
|
165
|
+
if (piecesCount > 2) {
|
|
166
|
+
console.warn(`${lc} gib only expected to have two pieces ATOW. re-examine please. (W: aa4283ac5a5747a386a69966ecdad39d)`);
|
|
167
|
+
}
|
|
168
|
+
const punctiliarHashPiece = pieces.splice(0, 1);
|
|
169
|
+
return {
|
|
170
|
+
punctiliarHash: punctiliarHashPiece[0],
|
|
171
|
+
tjpGib: pieces.join(gibDelimiter),
|
|
172
|
+
piecesCount,
|
|
173
|
+
delimiter: gibDelimiter,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
return {
|
|
178
|
+
punctiliarHash: gib,
|
|
179
|
+
piecesCount: 1,
|
|
180
|
+
delimiter: gibDelimiter,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
186
|
+
throw error;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=transform-helper.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-helper.mjs","sourceRoot":"","sources":["../../../src/V1/transforms/transform-helper.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The core of the simplicity of the ibGib protocol is that you are
|
|
3
|
+
* taking two (or more) ibGibs and producing other ibGibs.
|
|
4
|
+
*
|
|
5
|
+
* There are three primary functions: mut8, rel8, fork
|
|
6
|
+
*
|
|
7
|
+
* These are actually different aspects of the single function of
|
|
8
|
+
* relationship and time, either:
|
|
9
|
+
* 1) Creating a 'new' timeline, or...
|
|
10
|
+
* 2) Extending an existing one.
|
|
11
|
+
*
|
|
12
|
+
* Mut8 is intrinsic, rel8 is extrinsic, fork is a new timeline.
|
|
13
|
+
* Mut8 changes a timeline, rel8 changes a timeline's link(s),
|
|
14
|
+
* fork creates a new timeline.
|
|
15
|
+
*/
|
|
16
|
+
import { IbGibRel8ns, IbGibAddr, IbGibWithDataAndRel8ns, Gib } from '../types.mjs';
|
|
17
|
+
/**
|
|
18
|
+
* Need to see if I can remove this...
|
|
19
|
+
*/
|
|
20
|
+
export declare type IbGibData_V1 = {
|
|
21
|
+
[key: string]: any;
|
|
22
|
+
isTjp?: boolean;
|
|
23
|
+
n?: number;
|
|
24
|
+
timestamp?: string;
|
|
25
|
+
uuid?: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Convenience enum to avoid spelling mistakes. (optional)
|
|
29
|
+
*/
|
|
30
|
+
export declare enum Rel8n {
|
|
31
|
+
past = "past",
|
|
32
|
+
ancestor = "ancestor",
|
|
33
|
+
dna = "dna",
|
|
34
|
+
identity = "identity",
|
|
35
|
+
tjp = "tjp"
|
|
36
|
+
}
|
|
37
|
+
export interface IbGibRel8ns_V1 extends IbGibRel8ns {
|
|
38
|
+
[Rel8n.past]?: IbGibAddr[];
|
|
39
|
+
[Rel8n.identity]?: IbGibAddr[];
|
|
40
|
+
[Rel8n.ancestor]?: IbGibAddr[];
|
|
41
|
+
[Rel8n.dna]?: IbGibAddr[];
|
|
42
|
+
[Rel8n.tjp]?: IbGibAddr[];
|
|
43
|
+
}
|
|
44
|
+
export interface IbGib_V1<TData = IbGibData_V1, TRel8ns extends IbGibRel8ns_V1 = IbGibRel8ns_V1> extends IbGibWithDataAndRel8ns<TData, TRel8ns> {
|
|
45
|
+
}
|
|
46
|
+
export interface GibInfo {
|
|
47
|
+
/**
|
|
48
|
+
* Hash for this ibgib frame in time.
|
|
49
|
+
*/
|
|
50
|
+
punctiliarHash?: string;
|
|
51
|
+
/**
|
|
52
|
+
* The gib for this ibgib's most recent tjp.
|
|
53
|
+
*
|
|
54
|
+
* ## notes
|
|
55
|
+
*
|
|
56
|
+
* ATOW, only one tjp expected really, though I've been coding
|
|
57
|
+
* with the possibility of having multiple tjp's similar to
|
|
58
|
+
* checkpoints.
|
|
59
|
+
*/
|
|
60
|
+
tjpGib?: Gib;
|
|
61
|
+
/**
|
|
62
|
+
* If
|
|
63
|
+
*/
|
|
64
|
+
piecesCount?: number;
|
|
65
|
+
/**
|
|
66
|
+
* If a delimiter is used in this gib, this is the delimiter.
|
|
67
|
+
*
|
|
68
|
+
* ## notes
|
|
69
|
+
*
|
|
70
|
+
* ATOW, the caller already knows the delimiter. But I'm thinking that
|
|
71
|
+
* I may be persisting this at some point and it would be good to include.
|
|
72
|
+
*/
|
|
73
|
+
delimiter?: string;
|
|
74
|
+
/**
|
|
75
|
+
* True the gib is just 'gib' (GIB constant), else falsy.
|
|
76
|
+
*/
|
|
77
|
+
isPrimitive?: boolean;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../src/V1/types.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACH,WAAW,EAAE,SAAS,EAAE,sBAAsB,EAAE,GAAG,EACtD,MAAM,cAAc,CAAC;AAEtB;;GAEG;AACH,MAAM,CAAC,OAAO,MAAM,YAAY,GAAG;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,oBAAY,KAAK;IACb,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,GAAG,QAAQ;IACX,QAAQ,aAAa;IACrB,GAAG,QAAQ;CACd;AACD,MAAM,WAAW,cAAe,SAAQ,WAAW;IAC/C,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;IAC3B,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;IAC/B,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;IAC/B,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;IAC1B,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;CAC7B;AACD,MAAM,WAAW,QAAQ,CAAC,KAAK,GAAG,YAAY,EAAE,OAAO,SAAS,cAAc,GAAG,cAAc,CAC3F,SAAQ,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC;CACjD;AAED,MAAM,WAAW,OAAO;IACpB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC;IACb;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convenience enum to avoid spelling mistakes. (optional)
|
|
3
|
+
*/
|
|
4
|
+
export var Rel8n;
|
|
5
|
+
(function (Rel8n) {
|
|
6
|
+
Rel8n["past"] = "past";
|
|
7
|
+
Rel8n["ancestor"] = "ancestor";
|
|
8
|
+
Rel8n["dna"] = "dna";
|
|
9
|
+
Rel8n["identity"] = "identity";
|
|
10
|
+
Rel8n["tjp"] = "tjp";
|
|
11
|
+
})(Rel8n || (Rel8n = {}));
|
|
12
|
+
//# sourceMappingURL=types.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../src/V1/types.mts"],"names":[],"mappings":"AA8BA;;GAEG;AACH,MAAM,CAAN,IAAY,KAMX;AAND,WAAY,KAAK;IACb,sBAAa,CAAA;IACb,8BAAqB,CAAA;IACrB,oBAAW,CAAA;IACX,8BAAqB,CAAA;IACrB,oBAAW,CAAA;AACf,CAAC,EANW,KAAK,KAAL,KAAK,QAMhB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Ib, Gib, IbGib, IbGibAddr, IbAndGib } from './types.mjs';
|
|
2
|
+
export type HashAlgorithm = 'SHA-256' | 'SHA-512';
|
|
3
|
+
export declare const HashAlgorithm: {
|
|
4
|
+
[key: string]: HashAlgorithm;
|
|
5
|
+
};
|
|
6
|
+
export declare function clone(obj: any): any;
|
|
7
|
+
export declare function getTimestamp(): string;
|
|
8
|
+
/**
|
|
9
|
+
* Gets the ib^gib address from the given ib and gib or
|
|
10
|
+
* from the ibGib object.
|
|
11
|
+
*
|
|
12
|
+
* Need to refactor to getIbGibAddr
|
|
13
|
+
*/
|
|
14
|
+
export declare function getIbGibAddr({ ib, gib, ibGib, delimiter }: {
|
|
15
|
+
ib?: Ib;
|
|
16
|
+
gib?: Gib;
|
|
17
|
+
ibGib?: IbGib;
|
|
18
|
+
delimiter?: string;
|
|
19
|
+
}): string;
|
|
20
|
+
/**
|
|
21
|
+
* Get the ib and gib fields from an ibGib object or ibGibAddr
|
|
22
|
+
* with the given `delimiter`.
|
|
23
|
+
*/
|
|
24
|
+
export declare function getIbAndGib({ ibGib, ibGibAddr, delimiter }: {
|
|
25
|
+
ibGibAddr?: IbGibAddr;
|
|
26
|
+
ibGib?: IbGib;
|
|
27
|
+
delimiter?: string;
|
|
28
|
+
}): IbAndGib;
|
|
29
|
+
/**
|
|
30
|
+
* Simple hash function.
|
|
31
|
+
*
|
|
32
|
+
* NOTE:
|
|
33
|
+
* This is not used for ibGib.gib values (ATOW)
|
|
34
|
+
* but rather as a helper function for generating random UUIDs.
|
|
35
|
+
*
|
|
36
|
+
* @param s string to hash
|
|
37
|
+
* @param algorithm to use, currently only 'SHA-256'
|
|
38
|
+
*/
|
|
39
|
+
export declare function hash({ s, algorithm, }: {
|
|
40
|
+
s: string;
|
|
41
|
+
algorithm?: HashAlgorithm;
|
|
42
|
+
}): Promise<string>;
|
|
43
|
+
/**
|
|
44
|
+
* Simple func to generate UUID (sha-256 hash basically).
|
|
45
|
+
*
|
|
46
|
+
* @param seedSize size of seed for UUID generation
|
|
47
|
+
*/
|
|
48
|
+
export declare function getUUID(seedSize?: number): Promise<string>;
|
|
49
|
+
/**
|
|
50
|
+
* Syntactic sugar for JSON.stringify(obj, null, 2);
|
|
51
|
+
*
|
|
52
|
+
* @param obj to pretty stringify
|
|
53
|
+
*/
|
|
54
|
+
export declare function pretty(obj: any): string;
|
|
55
|
+
/**
|
|
56
|
+
* Just delays given number of ms.
|
|
57
|
+
*
|
|
58
|
+
* @param ms milliseconds to delay
|
|
59
|
+
*/
|
|
60
|
+
export declare function delay(ms: number): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* extracts the error message from an error object/string/falsy arg.
|
|
63
|
+
*
|
|
64
|
+
* ## notes
|
|
65
|
+
*
|
|
66
|
+
* * some libs throw errors, some throw just strings.
|
|
67
|
+
* * who knows what else it could be.
|
|
68
|
+
*
|
|
69
|
+
* ## todo
|
|
70
|
+
*
|
|
71
|
+
* * extract inner errors/causes if we ever use this function extensively.
|
|
72
|
+
*
|
|
73
|
+
* @param error the error object in the catch area of the try..catch block.
|
|
74
|
+
* @returns error.message if it's a string, error itself if it's a string, or canned error messages if it's falsy or none of the above.
|
|
75
|
+
*/
|
|
76
|
+
export declare function extractErrorMsg(error: any): string;
|
|
77
|
+
//# sourceMappingURL=helper.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helper.d.mts","sourceRoot":"","sources":["../src/helper.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIlE,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,CAAC;AAClD,eAAO,MAAM,aAAa,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAA;CAGzD,CAAA;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,GAAG,OAE7B;AACD,wBAAgB,YAAY,WAE3B;AACD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EACzB,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAe,EAClC,EAAE;IACC,EAAE,CAAC,EAAE,EAAE,CAAC;IACR,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB,UAIA;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EACxB,KAAK,EACL,SAAS,EACT,SAAe,EAClB,EAAE;IACC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB,GAAG,QAAQ,CAyCX;AAED;;;;;;;;;GASG;AACH,wBAAsB,IAAI,CAAC,EACvB,CAAC,EACD,SAAqB,GACxB,EAAE;IACC,CAAC,EAAE,MAAM,CAAC;IACV,SAAS,CAAC,EAAE,aAAa,CAAC;CAC7B,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBlB;AAED;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,QAAQ,SAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAW5D;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAEvC;AAED;;;;GAIG;AACH,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMrD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAYlD"}
|