@ibgib/node-gib 0.0.2
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/.ibgibignore +30 -0
- package/CHANGELOG.md +18 -0
- package/README.md +16 -0
- package/dist/assumptions.respec.d.mts +2 -0
- package/dist/assumptions.respec.d.mts.map +1 -0
- package/dist/assumptions.respec.mjs +41 -0
- package/dist/assumptions.respec.mjs.map +1 -0
- package/dist/common/prompt-functions.d.mts +89 -0
- package/dist/common/prompt-functions.d.mts.map +1 -0
- package/dist/common/prompt-functions.mjs +418 -0
- package/dist/common/prompt-functions.mjs.map +1 -0
- package/dist/constants.d.mts +3 -0
- package/dist/constants.d.mts.map +1 -0
- package/dist/constants.mjs +3 -0
- package/dist/constants.mjs.map +1 -0
- package/dist/foo.d.mts +2 -0
- package/dist/foo.d.mts.map +1 -0
- package/dist/foo.mjs +19 -0
- package/dist/foo.mjs.map +1 -0
- package/dist/helpers.d.mts +2 -0
- package/dist/helpers.d.mts.map +1 -0
- package/dist/helpers.mjs +3 -0
- package/dist/helpers.mjs.map +1 -0
- package/dist/respec-gib.node.d.mts +2 -0
- package/dist/respec-gib.node.d.mts.map +1 -0
- package/dist/respec-gib.node.mjs +213 -0
- package/dist/respec-gib.node.mjs.map +1 -0
- package/dist/spec-helper.node.respec.d.mts +13 -0
- package/dist/spec-helper.node.respec.d.mts.map +1 -0
- package/dist/spec-helper.node.respec.mjs +50 -0
- package/dist/spec-helper.node.respec.mjs.map +1 -0
- package/dist/types.d.mts +2 -0
- package/dist/types.d.mts.map +1 -0
- package/dist/types.mjs +2 -0
- package/dist/types.mjs.map +1 -0
- package/dist/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace-helper.d.mts +35 -0
- package/dist/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace-helper.d.mts.map +1 -0
- package/dist/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace-helper.mjs +267 -0
- package/dist/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace-helper.mjs.map +1 -0
- package/dist/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace.d.mts +98 -0
- package/dist/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace.d.mts.map +1 -0
- package/dist/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace.mjs +160 -0
- package/dist/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace.mjs.map +1 -0
- package/dist/witness/space/node-filesystem-space/node-filesystem-space-helper.d.mts +42 -0
- package/dist/witness/space/node-filesystem-space/node-filesystem-space-helper.d.mts.map +1 -0
- package/dist/witness/space/node-filesystem-space/node-filesystem-space-helper.mjs +312 -0
- package/dist/witness/space/node-filesystem-space/node-filesystem-space-helper.mjs.map +1 -0
- package/dist/witness/space/node-filesystem-space/node-filesystem-space-types.d.mts +84 -0
- package/dist/witness/space/node-filesystem-space/node-filesystem-space-types.d.mts.map +1 -0
- package/dist/witness/space/node-filesystem-space/node-filesystem-space-types.mjs +65 -0
- package/dist/witness/space/node-filesystem-space/node-filesystem-space-types.mjs.map +1 -0
- package/dist/witness/space/node-filesystem-space/node-filesystem-space-v1.d.mts +77 -0
- package/dist/witness/space/node-filesystem-space/node-filesystem-space-v1.d.mts.map +1 -0
- package/dist/witness/space/node-filesystem-space/node-filesystem-space-v1.mjs +672 -0
- package/dist/witness/space/node-filesystem-space/node-filesystem-space-v1.mjs.map +1 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/node-indexed-filesystem-space-constants.d.mts +5 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/node-indexed-filesystem-space-constants.d.mts.map +1 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/node-indexed-filesystem-space-constants.mjs +5 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/node-indexed-filesystem-space-constants.mjs.map +1 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/node-indexed-filesystem-space-types.d.mts +30 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/node-indexed-filesystem-space-types.d.mts.map +1 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/node-indexed-filesystem-space-types.mjs +38 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/node-indexed-filesystem-space-types.mjs.map +1 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/node-indexed-filesystem-space-v1.d.mts +64 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/node-indexed-filesystem-space-v1.d.mts.map +1 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/node-indexed-filesystem-space-v1.mjs +353 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/node-indexed-filesystem-space-v1.mjs.map +1 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.d.mts +2 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.d.mts.map +1 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.mjs +52 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.mjs.map +1 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.d.mts +2 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.d.mts.map +1 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.mjs +53 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.mjs.map +1 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.d.mts +2 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.d.mts.map +1 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.mjs +59 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.mjs.map +1 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-indexed-filesystem-space-v1.respec.d.mts +2 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-indexed-filesystem-space-v1.respec.d.mts.map +1 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-indexed-filesystem-space-v1.respec.mjs +55 -0
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-indexed-filesystem-space-v1.respec.mjs.map +1 -0
- package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.d.mts +2 -0
- package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.d.mts.map +1 -0
- package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.mjs +67 -0
- package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.mjs.map +1 -0
- package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.d.mts +2 -0
- package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.d.mts.map +1 -0
- package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.mjs +67 -0
- package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.mjs.map +1 -0
- package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.d.mts +2 -0
- package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.d.mts.map +1 -0
- package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.mjs +68 -0
- package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.mjs.map +1 -0
- package/dist/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.d.mts +2 -0
- package/dist/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.d.mts.map +1 -0
- package/dist/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.mjs +69 -0
- package/dist/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.mjs.map +1 -0
- package/generate-version-file.js +29 -0
- package/package.json +41 -0
- package/src/assumptions.respec.mts +51 -0
- package/src/common/prompt-functions.mts +429 -0
- package/src/constants.mts +2 -0
- package/src/foo.mts +13 -0
- package/src/helpers.mts +5 -0
- package/src/respec-gib.node.mts +201 -0
- package/src/spec-helper.node.respec.mts +50 -0
- package/src/types.mts +0 -0
- package/src/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace-helper.mts +290 -0
- package/src/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace.mts +166 -0
- package/src/witness/space/node-filesystem-space/node-filesystem-space-helper.mts +298 -0
- package/src/witness/space/node-filesystem-space/node-filesystem-space-types.mts +150 -0
- package/src/witness/space/node-filesystem-space/node-filesystem-space-v1.mts +672 -0
- package/src/witness/space/node-filesystem-space/node-indexed-filesystem-space/node-indexed-filesystem-space-constants.mts +6 -0
- package/src/witness/space/node-filesystem-space/node-indexed-filesystem-space/node-indexed-filesystem-space-types.mts +68 -0
- package/src/witness/space/node-filesystem-space/node-indexed-filesystem-space/node-indexed-filesystem-space-v1.mts +403 -0
- package/src/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.mts +68 -0
- package/src/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.mts +70 -0
- package/src/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.mts +72 -0
- package/src/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-indexed-filesystem-space-v1.respec.mts +72 -0
- package/src/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.mts +87 -0
- package/src/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.mts +88 -0
- package/src/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.mts +88 -0
- package/src/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.mts +90 -0
- package/tsconfig.json +17 -0
- package/tsconfig.test.json +10 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
|
|
2
|
+
import * as pathUtils from 'path';
|
|
3
|
+
import { writeFile } from 'node:fs/promises';
|
|
4
|
+
|
|
5
|
+
import packageJson from './package.json' with {type: 'json'};
|
|
6
|
+
|
|
7
|
+
const lc = `[${import.meta.url}]`;
|
|
8
|
+
console.log(`${lc} starting... (I: 1cb5f4175a1e2ccff8045ec622ed6825)`)
|
|
9
|
+
|
|
10
|
+
const filePath = pathUtils.resolve('./src/AUTO-GENERATED-version.mts')
|
|
11
|
+
|
|
12
|
+
const contents = `/**
|
|
13
|
+
* @module auto-generated-version
|
|
14
|
+
*
|
|
15
|
+
* CHANGES TO THIS FILE NOT BE SAVED
|
|
16
|
+
*
|
|
17
|
+
* this is automatically updated in the build process.
|
|
18
|
+
*
|
|
19
|
+
* CHANGES TO THIS FILE NOT BE SAVED
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* this is the version of this package, auto-updated in the build process
|
|
24
|
+
*/
|
|
25
|
+
export const AUTO_GENERATED_VERSION = '${packageJson.version}';
|
|
26
|
+
`;
|
|
27
|
+
|
|
28
|
+
await writeFile(filePath, contents, { encoding: 'utf8' });
|
|
29
|
+
console.log(`${lc} complete.`)
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ibgib/node-gib",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"description": "Node and server-specific ibGib code, i.e., things that don't run in the browser.",
|
|
5
|
+
"funding": {
|
|
6
|
+
"type": "individual",
|
|
7
|
+
"url": "https://paypal.me/ibGib"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"//_orchestration": "~~ ORCHESTRATION (handled by @ibgib/build-gib) ~~",
|
|
11
|
+
"//_publish": "~~ PUBLISH ~~",
|
|
12
|
+
"pack": "npm pack --pack-destination=\"./published\"",
|
|
13
|
+
"test:node:nobuild": "node dist/respec-gib.node.mjs --inspect",
|
|
14
|
+
"prepare:publish": "npm version patch && node ../../build/dist/concrete-build/build-node-gib.mjs --prod && npm run pack",
|
|
15
|
+
"man:prepare:publish": "use this to patch > build > pack for publishing to npm repo"
|
|
16
|
+
},
|
|
17
|
+
"type": "module",
|
|
18
|
+
"keywords": [
|
|
19
|
+
"ibgib",
|
|
20
|
+
"dlt",
|
|
21
|
+
"blockchain",
|
|
22
|
+
"graph-database"
|
|
23
|
+
],
|
|
24
|
+
"author": "William Raiford",
|
|
25
|
+
"license": "ISC",
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"@ibgib/helper-gib": "^0.0.36",
|
|
28
|
+
"@ibgib/ts-gib": "^0.5.32",
|
|
29
|
+
"@ibgib/core-gib": "^0.1.58",
|
|
30
|
+
"@ibgib/encrypt-gib": "^0.2.37"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@types/node": "^20.2.1"
|
|
34
|
+
},
|
|
35
|
+
"engines": {
|
|
36
|
+
"node": ">=19.0.0"
|
|
37
|
+
},
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"access": "public"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import {
|
|
2
|
+
firstOfEach, firstOfAll, ifWe,
|
|
3
|
+
lastOfEach, lastOfAll,
|
|
4
|
+
ifWeMight, iReckon, respecfully
|
|
5
|
+
} from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
|
|
6
|
+
const maam = `[${import.meta.url}]`, sir = maam;
|
|
7
|
+
import { IbGib_V1 } from '@ibgib/ts-gib/dist/V1/types.mjs';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* wrapper that uses crypto.subtle under the hood (i.e. doesn't hash using ts-gib)
|
|
11
|
+
*
|
|
12
|
+
* notes:
|
|
13
|
+
*
|
|
14
|
+
* * i did in fact copy this from ts-gib though, but we're testing simply that the
|
|
15
|
+
* context (node/browser/whatever) has this since it's integral to all things ibgib.
|
|
16
|
+
*/
|
|
17
|
+
async function cryptoSubtleHash({
|
|
18
|
+
s,
|
|
19
|
+
algorithm = 'SHA-256',
|
|
20
|
+
}: {
|
|
21
|
+
s: string,
|
|
22
|
+
algorithm?: string,
|
|
23
|
+
}): Promise<string> {
|
|
24
|
+
let { subtle } = globalThis.crypto;
|
|
25
|
+
if (!s) { throw new Error(`[${cryptoSubtleHash.name}] s is required`) }
|
|
26
|
+
if (!algorithm) { throw new Error(`[${cryptoSubtleHash.name}] algorithm is required`) }
|
|
27
|
+
try {
|
|
28
|
+
const msgUint8 = new TextEncoder().encode(s);
|
|
29
|
+
const buffer = await subtle.digest(algorithm, msgUint8);
|
|
30
|
+
const asArray = Array.from(new Uint8Array(buffer));
|
|
31
|
+
return asArray.map(b => b.toString(16).padStart(2, '0')).join('');
|
|
32
|
+
} catch (e) {
|
|
33
|
+
console.error(e.message ?? e);
|
|
34
|
+
throw e;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
await respecfully(sir, `non-ts-gib isomorphic crypto hashing`, async () => {
|
|
39
|
+
|
|
40
|
+
await ifWe(sir, `should digest simple string consistently using crypto.subtle directly `, async () => {
|
|
41
|
+
let h = await cryptoSubtleHash({ s: '42' });
|
|
42
|
+
iReckon(sir, h).asTo('42').isGonnaBe('73475cb40a568e8da8a045ced110137e159f890ac4da883b6b17dc651b3a8049');
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
await ifWe(sir, `should digest simple stringified ibgib consistently using crypto.subtle directly `, async () => {
|
|
46
|
+
let ibgib: IbGib_V1 = { ib: 'ib', gib: 'gib' };
|
|
47
|
+
let h = await cryptoSubtleHash({ s: JSON.stringify(ibgib) }); // doesn't use ts-gib but consistent stringifying json is important
|
|
48
|
+
iReckon(sir, h).asTo('ib^gib').isGonnaBe('cbad0694a257358c044611ea1fa88ace71a01a9b8409d2354d0387d8043f7671');
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
});
|
|
@@ -0,0 +1,429 @@
|
|
|
1
|
+
// import { AlertController, } from '@ionic/angular';
|
|
2
|
+
// import { Dialog } from '@capacitor/dialog';
|
|
3
|
+
|
|
4
|
+
import * as readline from 'node:readline/promises';
|
|
5
|
+
import { stdin, stdout } from 'node:process';
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
9
|
+
import { IbGib_V1 } from '@ibgib/ts-gib/dist/V1/types.mjs';
|
|
10
|
+
import { IbGibSpaceAny } from '@ibgib/core-gib/dist/witness/space/space-base-v1.mjs';
|
|
11
|
+
// import { SecretModalFormComponent } from '../modals/secret-modal-form/secret-modal-form.component';
|
|
12
|
+
// import { EncryptionModalFormComponent } from '../modals/encryption-modal-form/encryption-modal-form.component';
|
|
13
|
+
// import { OuterspaceModalFormComponent } from '../modals/outerspace-modal-form/outerspace-modal-form.component';
|
|
14
|
+
// import { UpdatePicModalFormComponent, UpdatePicPromptResult } from '../modals/update-pic-modal-form/update-pic-modal-form.component';
|
|
15
|
+
// import { UpdateCommentModalFormComponent, UpdateCommentPromptResult } from '../modals/update-comment-modal-form/update-comment-modal-form.component';
|
|
16
|
+
// import { EncryptionData_V1 } from '@ibgib/core-gib/dist/common/encrypt/encrypt-types.mjs';
|
|
17
|
+
// import { OuterSpaceIbGib } from '@ibgib/core-gib/dist/witness/space/outer-space/outer-space-types.mjs';
|
|
18
|
+
// import { PicIbGib_V1 } from '@ibgib/core-gib/dist/common/pic/pic-types.mjs';
|
|
19
|
+
// import { RobbotIbGib_V1 } from '@ibgib/core-gib/dist/witness/robbot/robbot-types.mjs';
|
|
20
|
+
// import {
|
|
21
|
+
// RobbotModalFormComponent, RobbotPromptResult
|
|
22
|
+
// } from '@ibgib/core-gib/dist/modals/robbot-modal-form/robbot-modal-form.component';
|
|
23
|
+
// import { AppIbGib_V1 } from '@ibgib/core-gib/dist/witness/app/app-types.mjs';
|
|
24
|
+
// import {
|
|
25
|
+
// AppModalFormComponent, AppPromptResult
|
|
26
|
+
// } from '@ibgib/core-gib/dist../modals/app-modal-form/app-modal-form.component';
|
|
27
|
+
// import { clearDoCancelModalOnBackButton, registerCancelModalOnBackButton } from '@ibgib/core-gib/dist./utils';
|
|
28
|
+
// import { CommentIbGib_V1 } from '@ibgib/core-gib/dist/common/comment/comment-types.mjs';
|
|
29
|
+
// import { SECRET_REL8N_NAME } from '@ibgib/core-gib/dist/common/encrypt/encrypt-constants.mjs';
|
|
30
|
+
|
|
31
|
+
import { GLOBAL_LOG_A_LOT } from '../constants.mjs';
|
|
32
|
+
|
|
33
|
+
const logalot = GLOBAL_LOG_A_LOT || false;
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Wrapper for alerting via atow capacitor modals.
|
|
38
|
+
*
|
|
39
|
+
* @returns FUNCTION that alerts (doesn't actually do the alert)
|
|
40
|
+
*/
|
|
41
|
+
export function getFnAlert(): ({ title, msg }: { title: string, msg: string }) => Promise<void> {
|
|
42
|
+
return async ({ title, msg }: { title: string, msg: string }) => {
|
|
43
|
+
// await Dialog.alert({ title, message: msg });
|
|
44
|
+
console.log(`${title}: ${msg}`);
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Wrapper for prompting via atow capacitor modals.
|
|
50
|
+
*
|
|
51
|
+
* @returns FUNCTION that prompts (doesn't actually do the prompt)
|
|
52
|
+
*/
|
|
53
|
+
export function getFnPrompt(): ({ title, msg }: { title: string, msg: string }) => Promise<string | null> {
|
|
54
|
+
return async ({ title, msg }: { title: string, msg: string }) => {
|
|
55
|
+
const lc = `[${getFnPrompt.name}]`;
|
|
56
|
+
let answer: string;
|
|
57
|
+
try {
|
|
58
|
+
if (!msg) { throw new Error(`msg required. (E: c39d1656b6b803e11bad46efe15b6823)`); }
|
|
59
|
+
const rl = readline.createInterface({ input: stdin, output: stdout });
|
|
60
|
+
try {
|
|
61
|
+
const text = title ? `\n# ${title}:\n\n${msg}\n` : `${msg}\n`;
|
|
62
|
+
answer = await rl.question(text);
|
|
63
|
+
if (logalot) { console.log(`${lc} text: ${text}. answer: ${answer} (I: 7f0375b3abd7eba9c75636d31bbca323)`); }
|
|
64
|
+
} catch (error) {
|
|
65
|
+
throw error;
|
|
66
|
+
} finally {
|
|
67
|
+
rl.close();
|
|
68
|
+
}
|
|
69
|
+
} catch (error) {
|
|
70
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
return answer || answer === '' ? answer : null;
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Wrapper for confirming via commandline/terminal prompt.
|
|
79
|
+
*
|
|
80
|
+
* @returns FUNCTION that prompts (doesn't actually do the prompt)
|
|
81
|
+
*/
|
|
82
|
+
export function getFnConfirm():
|
|
83
|
+
({ title, msg, okButtonTitle, cancelButtonTitle }:
|
|
84
|
+
{ title: string, msg: string, okButtonTitle?: string, cancelButtonTitle?: string }) => Promise<boolean> {
|
|
85
|
+
return async ({ title, msg, okButtonTitle, cancelButtonTitle }:
|
|
86
|
+
{ title: string, msg: string, okButtonTitle?: string, cancelButtonTitle?: string }) => {
|
|
87
|
+
okButtonTitle ||= 'yes';
|
|
88
|
+
cancelButtonTitle ||= 'no';
|
|
89
|
+
|
|
90
|
+
if (okButtonTitle === cancelButtonTitle) { throw new Error(`okButtonTitle (${okButtonTitle}) must be different than cancelButtonTitle (${cancelButtonTitle}) (E: 254e92fed2e99edc362de337e8bf3123)`); }
|
|
91
|
+
if (okButtonTitle[0] === cancelButtonTitle[0]) { throw new Error(`okButtonTitle (${okButtonTitle}) must start with a different character than cancelButtonTitle (${cancelButtonTitle}) (E: 8bdd34b0d90f479399d911af58df9190)`); }
|
|
92
|
+
|
|
93
|
+
const promptFn = getFnPrompt();
|
|
94
|
+
let result: string | null = null;
|
|
95
|
+
do {
|
|
96
|
+
result = await promptFn({ title, msg: `${msg} (${okButtonTitle}/${cancelButtonTitle})` });
|
|
97
|
+
result = result ? result!.toLowerCase() : null;
|
|
98
|
+
} while (!result);
|
|
99
|
+
|
|
100
|
+
if (result === okButtonTitle![0].toLowerCase()) { result = okButtonTitle!; }
|
|
101
|
+
return result === okButtonTitle;
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Prompts the user for a password using an ionic capacitor (atow) alert
|
|
107
|
+
* controller with an input of type `'password'`.
|
|
108
|
+
*
|
|
109
|
+
*
|
|
110
|
+
*
|
|
111
|
+
* @returns either the password or null if cancelled
|
|
112
|
+
*/
|
|
113
|
+
export function getFnPromptPassword(): (title: string, msg: string) => Promise<string | null> {
|
|
114
|
+
const lc = `[${getFnPromptPassword.name}]`;
|
|
115
|
+
try {
|
|
116
|
+
throw new Error(`not implemented yet. i have added PromptPasswordFunction type in core-gib/core-types (E: 78c7dbb8958f8f353730d0dbb86b5423)`);
|
|
117
|
+
// if (!alertController) { throw new Error('alertController required.'); }
|
|
118
|
+
// let fnPromptPassword = async (title: string, msg: string) => {
|
|
119
|
+
// const alert = await alertController.create({
|
|
120
|
+
// header: title,
|
|
121
|
+
// message: msg,
|
|
122
|
+
// inputs: [
|
|
123
|
+
// { name: 'password', type: 'password', label: 'Password: ', },
|
|
124
|
+
// ],
|
|
125
|
+
// buttons: ['OK', 'Cancel'],
|
|
126
|
+
// });
|
|
127
|
+
// await alert.present();
|
|
128
|
+
// let result = await alert.onDidDismiss();
|
|
129
|
+
// if (result?.data?.values?.password) {
|
|
130
|
+
// return result!.data!.values!.password;
|
|
131
|
+
// } else {
|
|
132
|
+
// return null;
|
|
133
|
+
// }
|
|
134
|
+
// };
|
|
135
|
+
// return fnPromptPassword;
|
|
136
|
+
} catch (error) {
|
|
137
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
138
|
+
throw error;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Creates a function with a single `space` arg. This fn when called shows a
|
|
144
|
+
* modal to create an secret ibgib. If the user chooses to save, then the
|
|
145
|
+
* modal will create the secret ibgib, save the transform result in the
|
|
146
|
+
* given `space` (atow this is the local user space), and return the new
|
|
147
|
+
* secret ibgib.
|
|
148
|
+
*/
|
|
149
|
+
export function getFn_promptCreateSecretIbGib(
|
|
150
|
+
): (space: IbGibSpaceAny) => Promise<IbGib_V1 | undefined> {
|
|
151
|
+
const lc = `[${getFn_promptCreateSecretIbGib.name}]`;
|
|
152
|
+
return async (space: IbGibSpaceAny) => {
|
|
153
|
+
throw new Error(`not impl yet (E: 990b79f9b8c2302163cc656deceaf923)`);
|
|
154
|
+
// /** hacked untyped document reference to hack a solution to the back button leaving modals open. */
|
|
155
|
+
// try {
|
|
156
|
+
// const modal = await common.modalController.create({
|
|
157
|
+
// component: SecretModalFormComponent,
|
|
158
|
+
// });
|
|
159
|
+
// // have to register/clear modal for cancelling in case the user
|
|
160
|
+
// // presses the back button while the modal is still visible
|
|
161
|
+
// registerCancelModalOnBackButton(modal);
|
|
162
|
+
// await modal.present();
|
|
163
|
+
// let resModal = await modal.onWillDismiss();
|
|
164
|
+
// // clear the cancel since it dismissed naturally
|
|
165
|
+
// clearDoCancelModalOnBackButton();
|
|
166
|
+
// if (resModal.data) {
|
|
167
|
+
// const resNewSecret = <TransformResult<SecretIbGib_V1>>resModal.data;
|
|
168
|
+
// await common.ibgibs.persistTransformResult({ resTransform: resNewSecret, space });
|
|
169
|
+
// const addr = getIbGibAddr({ ibGib: resNewSecret.newIbGib });
|
|
170
|
+
// if (logalot) { console.log(`${lc} created secret. addr: ${addr}`); }
|
|
171
|
+
// await common.ibgibs.rel8ToSpecialIbGib({
|
|
172
|
+
// type: "secrets",
|
|
173
|
+
// rel8nName: SECRET_REL8N_NAME,
|
|
174
|
+
// ibGibsToRel8: [resNewSecret.newIbGib],
|
|
175
|
+
// space,
|
|
176
|
+
// });
|
|
177
|
+
// return resNewSecret.newIbGib;
|
|
178
|
+
// } else {
|
|
179
|
+
// // didn't create one
|
|
180
|
+
// console.warn(`${lc} didn't create at this time.`);
|
|
181
|
+
// return undefined;
|
|
182
|
+
// }
|
|
183
|
+
// } catch (error) {
|
|
184
|
+
// console.error(`${lc} error: ${extractErrorMsg(error)}`);
|
|
185
|
+
// return undefined;
|
|
186
|
+
// }
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Creates a function with a single `space` arg. This fn when called shows a
|
|
192
|
+
* modal to create an encryption ibgib. If the user chooses to save, then the
|
|
193
|
+
* modal will create the encryption ibgib, save the transform result in the
|
|
194
|
+
* given `space` (atow this is the local user space), and return the new
|
|
195
|
+
* encryption ibgib.
|
|
196
|
+
*/
|
|
197
|
+
export function getFn_promptCreateEncryptionIbGib(
|
|
198
|
+
// common: CommonService,
|
|
199
|
+
): (space: IbGibSpaceAny) => Promise<IbGib_V1 | undefined> {
|
|
200
|
+
throw new Error(`not impl yet (E: 69c7d552de7318a97457363adfd34f23)`);
|
|
201
|
+
// const lc = `[${getFn_promptCreateEncryptionIbGib.name}]`;
|
|
202
|
+
// return async (space: IbGibSpaceAny) => {
|
|
203
|
+
// try {
|
|
204
|
+
// const modal = await common.modalController.create({
|
|
205
|
+
// component: EncryptionModalFormComponent,
|
|
206
|
+
// });
|
|
207
|
+
// // have to register/clear modal for cancelling in case the user
|
|
208
|
+
// // presses the back button while the modal is still visible
|
|
209
|
+
// registerCancelModalOnBackButton(modal);
|
|
210
|
+
// await modal.present();
|
|
211
|
+
// let resModal = await modal.onWillDismiss();
|
|
212
|
+
// // clear the cancel since it dismissed naturally
|
|
213
|
+
// clearDoCancelModalOnBackButton();
|
|
214
|
+
// if (resModal.data) {
|
|
215
|
+
// const resNewEncryption = <TransformResult<IbGib_V1<EncryptionData_V1>>>resModal.data;
|
|
216
|
+
// await common.ibgibs.persistTransformResult({ resTransform: resNewEncryption, space });
|
|
217
|
+
// const addr = getIbGibAddr({ ibGib: resNewEncryption.newIbGib });
|
|
218
|
+
// if (logalot) { console.log(`${lc} created encryption. addr: ${addr}`); }
|
|
219
|
+
// return resNewEncryption.newIbGib;
|
|
220
|
+
// } else {
|
|
221
|
+
// // didn't create one
|
|
222
|
+
// console.warn(`${lc} didn't create at this time.`);
|
|
223
|
+
// return undefined;
|
|
224
|
+
// }
|
|
225
|
+
// } catch (error) {
|
|
226
|
+
// console.error(`${lc} error: ${extractErrorMsg(error)}`);
|
|
227
|
+
// return undefined;
|
|
228
|
+
// }
|
|
229
|
+
// }
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Creates a function with a single `space` arg. This fn when called shows a
|
|
234
|
+
* modal to create an outerspace ibgib. If the user chooses to save, then the
|
|
235
|
+
* modal will create the outerspace ibgib, save the transform result in the
|
|
236
|
+
* given `space` (atow this is the local user space), and return the new
|
|
237
|
+
* outerspace ibgib.
|
|
238
|
+
*/
|
|
239
|
+
export function getFn_promptCreateOuterSpaceIbGib(
|
|
240
|
+
// common: CommonService,
|
|
241
|
+
): (space: IbGibSpaceAny) => Promise<IbGib_V1 | undefined> {
|
|
242
|
+
throw new Error(`not impl yet (E: e48ef8a7b4252cfe795dde791de99523)`);
|
|
243
|
+
// const lc = `[${getFn_promptCreateOuterSpaceIbGib.name}]`;
|
|
244
|
+
// return async (space: IbGibSpaceAny) => {
|
|
245
|
+
// try {
|
|
246
|
+
// const modal = await common.modalController.create({
|
|
247
|
+
// component: OuterspaceModalFormComponent,
|
|
248
|
+
// });
|
|
249
|
+
// // have to register/clear modal for cancelling in case the user
|
|
250
|
+
// // presses the back button while the modal is still visible
|
|
251
|
+
// registerCancelModalOnBackButton(modal);
|
|
252
|
+
// await modal.present();
|
|
253
|
+
// let resModal = await modal.onWillDismiss();
|
|
254
|
+
// // clear the cancel since it dismissed naturally
|
|
255
|
+
// clearDoCancelModalOnBackButton();
|
|
256
|
+
// if (resModal.data) {
|
|
257
|
+
// const resOuterSpace = <TransformResult<OuterSpaceIbGib>>resModal.data;
|
|
258
|
+
// await common.ibgibs.persistTransformResult({ resTransform: resOuterSpace, space });
|
|
259
|
+
// const addr = getIbGibAddr({ ibGib: resOuterSpace.newIbGib });
|
|
260
|
+
// if (logalot) { console.log(`${lc} created outerspace. addr: ${addr}`); }
|
|
261
|
+
// return resOuterSpace.newIbGib;
|
|
262
|
+
// } else {
|
|
263
|
+
// // didn't create one
|
|
264
|
+
// console.warn(`${lc} didn't create outerspace at this time.`);
|
|
265
|
+
// return undefined;
|
|
266
|
+
// }
|
|
267
|
+
// } catch (error) {
|
|
268
|
+
// console.error(`${lc} error: ${extractErrorMsg(error)}`);
|
|
269
|
+
// return undefined;
|
|
270
|
+
// }
|
|
271
|
+
// }
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Creates a function with a single `space` arg. This fn when called shows a
|
|
276
|
+
* modal to mutate a pic ibgib. If the user chooses to save, then the modal will
|
|
277
|
+
* perform the mutation, save the transform result in the given `space`, and
|
|
278
|
+
* return the new pic ibgib.
|
|
279
|
+
*/
|
|
280
|
+
// export function getFn_promptUpdatePicIbGib(
|
|
281
|
+
// common: CommonService,
|
|
282
|
+
// ): (space: IbGibSpaceAny, picIbGib: PicIbGib_V1) => Promise<UpdatePicPromptResult | undefined> {
|
|
283
|
+
// const lc = `[${getFn_promptUpdatePicIbGib.name}]`;
|
|
284
|
+
// return async (space: IbGibSpaceAny, picIbGib: PicIbGib_V1) => {
|
|
285
|
+
// try {
|
|
286
|
+
// const modal = await common.modalController.create({
|
|
287
|
+
// component: UpdatePicModalFormComponent,
|
|
288
|
+
// componentProps: { picIbGib, space },
|
|
289
|
+
// });
|
|
290
|
+
// // have to register/clear modal for cancelling in case the user
|
|
291
|
+
// // presses the back button while the modal is still visible
|
|
292
|
+
// registerCancelModalOnBackButton(modal);
|
|
293
|
+
// await modal.present();
|
|
294
|
+
// let resModal = await modal.onWillDismiss();
|
|
295
|
+
// // clear the cancel since it dismissed naturally
|
|
296
|
+
// clearDoCancelModalOnBackButton();
|
|
297
|
+
// if (resModal.data) {
|
|
298
|
+
// const result = <UpdatePicPromptResult>resModal.data;
|
|
299
|
+
// const [resCreatePic, _resCreateBin] = result;
|
|
300
|
+
// const addr = getIbGibAddr({ ibGib: resCreatePic.newIbGib });
|
|
301
|
+
// if (logalot) { console.log(`${lc} updated pic. addr: ${addr}`); }
|
|
302
|
+
// return result;
|
|
303
|
+
// } else {
|
|
304
|
+
// // didn't create one
|
|
305
|
+
// console.warn(`${lc} didn't create at this time.`);
|
|
306
|
+
// return undefined;
|
|
307
|
+
// }
|
|
308
|
+
// } catch (error) {
|
|
309
|
+
// console.error(`${lc} error: ${extractErrorMsg(error)}`);
|
|
310
|
+
// return undefined;
|
|
311
|
+
// }
|
|
312
|
+
// }
|
|
313
|
+
// }
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Creates a function with a single `space` arg. This fn when called shows a
|
|
317
|
+
* modal to mutate a comment ibgib. If the user chooses to save, then the modal will
|
|
318
|
+
* perform the mutation, save the transform result in the given `space`, and
|
|
319
|
+
* return the new comment ibgib.
|
|
320
|
+
*/
|
|
321
|
+
// export function getFn_promptUpdateCommentIbGib(
|
|
322
|
+
// common: CommonService,
|
|
323
|
+
// ): (space: IbGibSpaceAny, commentIbGib: CommentIbGib_V1) => Promise<UpdateCommentPromptResult | undefined> {
|
|
324
|
+
// const lc = `[${getFn_promptUpdateCommentIbGib.name}]`;
|
|
325
|
+
// return async (space: IbGibSpaceAny, commentIbGib: CommentIbGib_V1) => {
|
|
326
|
+
// try {
|
|
327
|
+
// const modal = await common.modalController.create({
|
|
328
|
+
// component: UpdateCommentModalFormComponent,
|
|
329
|
+
// componentProps: { commentIbGib, space },
|
|
330
|
+
// });
|
|
331
|
+
// // have to register/clear modal for cancelling in case the user
|
|
332
|
+
// // presses the back button while the modal is still visible
|
|
333
|
+
// registerCancelModalOnBackButton(modal);
|
|
334
|
+
// await modal.present();
|
|
335
|
+
// let resModal = await modal.onWillDismiss();
|
|
336
|
+
// // clear the cancel since it dismissed naturally
|
|
337
|
+
// clearDoCancelModalOnBackButton();
|
|
338
|
+
// if (resModal.data) {
|
|
339
|
+
// const resCreateComment = <UpdateCommentPromptResult>resModal.data;
|
|
340
|
+
// const addr = getIbGibAddr({ ibGib: resCreateComment.newIbGib });
|
|
341
|
+
// if (logalot) { console.log(`${lc} updated comment. addr: ${addr}`); }
|
|
342
|
+
// return resCreateComment;
|
|
343
|
+
// } else {
|
|
344
|
+
// // didn't create one
|
|
345
|
+
// console.warn(`${lc} didn't create at this time.`);
|
|
346
|
+
// return undefined;
|
|
347
|
+
// }
|
|
348
|
+
// } catch (error) {
|
|
349
|
+
// console.error(`${lc} error: ${extractErrorMsg(error)}`);
|
|
350
|
+
// return undefined;
|
|
351
|
+
// }
|
|
352
|
+
// }
|
|
353
|
+
// }
|
|
354
|
+
|
|
355
|
+
/**
|
|
356
|
+
* Creates a function with a single `space` arg. This fn when called shows a
|
|
357
|
+
* modal to create a robbot ibgib. If the user chooses to save, then the modal will
|
|
358
|
+
* perform the mutation, save the transform result in the given `space`, and
|
|
359
|
+
* return the new pic ibgib.
|
|
360
|
+
*/
|
|
361
|
+
// export function getFn_promptRobbotIbGib(
|
|
362
|
+
// common: CommonService,
|
|
363
|
+
// ): (space: IbGibSpaceAny, ibGib: RobbotIbGib_V1) => Promise<RobbotPromptResult | undefined> {
|
|
364
|
+
// const lc = `[${getFn_promptRobbotIbGib.name}]`;
|
|
365
|
+
// return async (space: IbGibSpaceAny, ibGib: RobbotIbGib_V1) => {
|
|
366
|
+
// try {
|
|
367
|
+
// const modal = await common.modalController.create({
|
|
368
|
+
// component: RobbotModalFormComponent,
|
|
369
|
+
// componentProps: { ibGib, space },
|
|
370
|
+
// });
|
|
371
|
+
// // have to register/clear modal for cancelling in case the user
|
|
372
|
+
// // presses the back button while the modal is still visible
|
|
373
|
+
// registerCancelModalOnBackButton(modal);
|
|
374
|
+
// await modal.present();
|
|
375
|
+
// let resModal = await modal.onWillDismiss();
|
|
376
|
+
// // clear the cancel since it dismissed naturally
|
|
377
|
+
// clearDoCancelModalOnBackButton();
|
|
378
|
+
// if (resModal.data) {
|
|
379
|
+
// const result = <RobbotPromptResult>resModal.data;
|
|
380
|
+
// return result;
|
|
381
|
+
// } else {
|
|
382
|
+
// // didn't create one
|
|
383
|
+
// console.warn(`${lc} didn't create at this time.`);
|
|
384
|
+
// return undefined;
|
|
385
|
+
// }
|
|
386
|
+
// } catch (error) {
|
|
387
|
+
// console.error(`${lc} error: ${extractErrorMsg(error)}`);
|
|
388
|
+
// return undefined;
|
|
389
|
+
// }
|
|
390
|
+
// }
|
|
391
|
+
// }
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* Creates a function with a single `space` arg. This fn when called shows a
|
|
395
|
+
* modal to create a app ibgib. If the user chooses to save, then the modal will
|
|
396
|
+
* perform the mutation, save the transform result in the given `space`, and
|
|
397
|
+
* return the new pic ibgib.
|
|
398
|
+
*/
|
|
399
|
+
// export function getFn_promptAppIbGib(
|
|
400
|
+
// common: CommonService,
|
|
401
|
+
// ): (space: IbGibSpaceAny, ibGib: AppIbGib_V1) => Promise<AppPromptResult | undefined> {
|
|
402
|
+
// const lc = `[${getFn_promptAppIbGib.name}]`;
|
|
403
|
+
// return async (space: IbGibSpaceAny, ibGib: AppIbGib_V1) => {
|
|
404
|
+
// try {
|
|
405
|
+
// const modal = await common.modalController.create({
|
|
406
|
+
// component: AppModalFormComponent,
|
|
407
|
+
// componentProps: { ibGib, space },
|
|
408
|
+
// });
|
|
409
|
+
// // have to register/clear modal for cancelling in case the user
|
|
410
|
+
// // presses the back button while the modal is still visible
|
|
411
|
+
// registerCancelModalOnBackButton(modal);
|
|
412
|
+
// await modal.present();
|
|
413
|
+
// let resModal = await modal.onWillDismiss();
|
|
414
|
+
// // clear the cancel since it dismissed naturally
|
|
415
|
+
// clearDoCancelModalOnBackButton();
|
|
416
|
+
// if (resModal.data) {
|
|
417
|
+
// const result = <AppPromptResult>resModal.data;
|
|
418
|
+
// return result;
|
|
419
|
+
// } else {
|
|
420
|
+
// // didn't create one
|
|
421
|
+
// console.warn(`${lc} didn't create at this time.`);
|
|
422
|
+
// return undefined;
|
|
423
|
+
// }
|
|
424
|
+
// } catch (error) {
|
|
425
|
+
// console.error(`${lc} error: ${extractErrorMsg(error)}`);
|
|
426
|
+
// return undefined;
|
|
427
|
+
// }
|
|
428
|
+
// }
|
|
429
|
+
// }
|
package/src/foo.mts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const logalot = true;
|
|
2
|
+
|
|
3
|
+
export async function fooFn(): Promise<void> {
|
|
4
|
+
const lc = `[${fooFn.name}]`;
|
|
5
|
+
try {
|
|
6
|
+
if (logalot) { console.log(`${lc} starting... (I: dfb1e864e0a8d029abab9418f249ed25)`); }
|
|
7
|
+
} catch (error) {
|
|
8
|
+
console.error(`${lc} ${error.message}`);
|
|
9
|
+
throw error;
|
|
10
|
+
} finally {
|
|
11
|
+
if (logalot) { console.log(`${lc} complete.`); }
|
|
12
|
+
}
|
|
13
|
+
}
|