@ibgib/core-gib 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vscode/core-gib-snippets.code-snippets +189 -0
- package/.vscode/launch.json +24 -0
- package/.vscode/settings.json +56 -0
- package/.vscode/tasks.json +37 -0
- package/CHANGELOG.md +11 -0
- package/README.md +215 -0
- package/dist/common/aws-constants.d.mts +7 -0
- package/dist/common/aws-constants.d.mts.map +1 -0
- package/dist/common/aws-constants.mjs +7 -0
- package/dist/common/aws-constants.mjs.map +1 -0
- package/dist/common/bin/bin-types.d.mts +17 -0
- package/dist/common/bin/bin-types.d.mts.map +1 -0
- package/dist/common/bin/bin-types.mjs +3 -0
- package/dist/common/bin/bin-types.mjs.map +1 -0
- package/dist/common/cache/cache-types.d.mts +57 -0
- package/dist/common/cache/cache-types.d.mts.map +1 -0
- package/dist/common/cache/cache-types.mjs +2 -0
- package/dist/common/cache/cache-types.mjs.map +1 -0
- package/dist/common/comment/comment-constants.d.mts +11 -0
- package/dist/common/comment/comment-constants.d.mts.map +1 -0
- package/dist/common/comment/comment-constants.mjs +11 -0
- package/dist/common/comment/comment-constants.mjs.map +1 -0
- package/dist/common/comment/comment-helper.d.mts +59 -0
- package/dist/common/comment/comment-helper.d.mts.map +1 -0
- package/dist/common/comment/comment-helper.mjs +173 -0
- package/dist/common/comment/comment-helper.mjs.map +1 -0
- package/dist/common/comment/comment-types.d.mts +16 -0
- package/dist/common/comment/comment-types.d.mts.map +1 -0
- package/dist/common/comment/comment-types.mjs +2 -0
- package/dist/common/comment/comment-types.mjs.map +1 -0
- package/dist/common/display/display-helper.d.mts +19 -0
- package/dist/common/display/display-helper.d.mts.map +1 -0
- package/dist/common/display/display-helper.mjs +68 -0
- package/dist/common/display/display-helper.mjs.map +1 -0
- package/dist/common/display/display-types.d.mts +97 -0
- package/dist/common/display/display-types.d.mts.map +1 -0
- package/dist/common/display/display-types.mjs +37 -0
- package/dist/common/display/display-types.mjs.map +1 -0
- package/dist/common/encrypt/encrypt-constants.d.mts +27 -0
- package/dist/common/encrypt/encrypt-constants.d.mts.map +1 -0
- package/dist/common/encrypt/encrypt-constants.mjs +27 -0
- package/dist/common/encrypt/encrypt-constants.mjs.map +1 -0
- package/dist/common/encrypt/encrypt-types.d.mts +116 -0
- package/dist/common/encrypt/encrypt-types.d.mts.map +1 -0
- package/dist/common/encrypt/encrypt-types.mjs +9 -0
- package/dist/common/encrypt/encrypt-types.mjs.map +1 -0
- package/dist/common/error/error-constants.d.mts +9 -0
- package/dist/common/error/error-constants.d.mts.map +1 -0
- package/dist/common/error/error-constants.mjs +9 -0
- package/dist/common/error/error-constants.mjs.map +1 -0
- package/dist/common/error/error-helper.d.mts +43 -0
- package/dist/common/error/error-helper.d.mts.map +1 -0
- package/dist/common/error/error-helper.mjs +167 -0
- package/dist/common/error/error-helper.mjs.map +1 -0
- package/dist/common/error/error-types.d.mts +58 -0
- package/dist/common/error/error-types.d.mts.map +1 -0
- package/dist/common/error/error-types.mjs +2 -0
- package/dist/common/error/error-types.mjs.map +1 -0
- package/dist/common/form/form-helper.d.mts +97 -0
- package/dist/common/form/form-helper.d.mts.map +1 -0
- package/dist/common/form/form-helper.mjs +185 -0
- package/dist/common/form/form-helper.mjs.map +1 -0
- package/dist/common/form/form-items.d.mts +229 -0
- package/dist/common/form/form-items.d.mts.map +1 -0
- package/dist/common/form/form-items.mjs +63 -0
- package/dist/common/form/form-items.mjs.map +1 -0
- package/dist/common/import-export/import-export-types.d.mts +18 -0
- package/dist/common/import-export/import-export-types.d.mts.map +1 -0
- package/dist/common/import-export/import-export-types.mjs +2 -0
- package/dist/common/import-export/import-export-types.mjs.map +1 -0
- package/dist/common/legacy/legacy-types.d.mts +2 -0
- package/dist/common/legacy/legacy-types.d.mts.map +1 -0
- package/dist/common/legacy/legacy-types.mjs +2 -0
- package/dist/common/legacy/legacy-types.mjs.map +1 -0
- package/dist/common/link/link-constants.d.mts +2 -0
- package/dist/common/link/link-constants.d.mts.map +1 -0
- package/dist/common/link/link-constants.mjs +2 -0
- package/dist/common/link/link-constants.mjs.map +1 -0
- package/dist/common/link/link-helper.d.mts +37 -0
- package/dist/common/link/link-helper.d.mts.map +1 -0
- package/dist/common/link/link-helper.mjs +143 -0
- package/dist/common/link/link-helper.mjs.map +1 -0
- package/dist/common/link/link-types.d.mts +14 -0
- package/dist/common/link/link-types.d.mts.map +1 -0
- package/dist/common/link/link-types.mjs +2 -0
- package/dist/common/link/link-types.mjs.map +1 -0
- package/dist/common/other/graph-helper.d.mts +166 -0
- package/dist/common/other/graph-helper.d.mts.map +1 -0
- package/dist/common/other/graph-helper.mjs +710 -0
- package/dist/common/other/graph-helper.mjs.map +1 -0
- package/dist/common/other/ibgib-helper.d.mts +245 -0
- package/dist/common/other/ibgib-helper.d.mts.map +1 -0
- package/dist/common/other/ibgib-helper.mjs +641 -0
- package/dist/common/other/ibgib-helper.mjs.map +1 -0
- package/dist/common/other/other-constants.d.mts +53 -0
- package/dist/common/other/other-constants.d.mts.map +1 -0
- package/dist/common/other/other-constants.mjs +67 -0
- package/dist/common/other/other-constants.mjs.map +1 -0
- package/dist/common/other/other-types.d.mts +166 -0
- package/dist/common/other/other-types.d.mts.map +1 -0
- package/dist/common/other/other-types.mjs +30 -0
- package/dist/common/other/other-types.mjs.map +1 -0
- package/dist/common/other/svg-constants.d.mts +2 -0
- package/dist/common/other/svg-constants.d.mts.map +1 -0
- package/dist/common/other/svg-constants.mjs +2 -0
- package/dist/common/other/svg-constants.mjs.map +1 -0
- package/dist/common/other/svg-helper.d.mts +54 -0
- package/dist/common/other/svg-helper.d.mts.map +1 -0
- package/dist/common/other/svg-helper.mjs +170 -0
- package/dist/common/other/svg-helper.mjs.map +1 -0
- package/dist/common/pic/pic-constants.d.mts +13 -0
- package/dist/common/pic/pic-constants.d.mts.map +1 -0
- package/dist/common/pic/pic-constants.mjs +13 -0
- package/dist/common/pic/pic-constants.mjs.map +1 -0
- package/dist/common/pic/pic-helper.d.mts +70 -0
- package/dist/common/pic/pic-helper.d.mts.map +1 -0
- package/dist/common/pic/pic-helper.mjs +235 -0
- package/dist/common/pic/pic-helper.mjs.map +1 -0
- package/dist/common/pic/pic-types.d.mts +23 -0
- package/dist/common/pic/pic-types.d.mts.map +1 -0
- package/dist/common/pic/pic-types.mjs +2 -0
- package/dist/common/pic/pic-types.mjs.map +1 -0
- package/dist/common/root/root-constants.d.mts +40 -0
- package/dist/common/root/root-constants.d.mts.map +1 -0
- package/dist/common/root/root-constants.mjs +40 -0
- package/dist/common/root/root-constants.mjs.map +1 -0
- package/dist/common/root/root-types.d.mts +9 -0
- package/dist/common/root/root-types.d.mts.map +1 -0
- package/dist/common/root/root-types.mjs +2 -0
- package/dist/common/root/root-types.mjs.map +1 -0
- package/dist/common/tag/tag-constants.d.mts +21 -0
- package/dist/common/tag/tag-constants.d.mts.map +1 -0
- package/dist/common/tag/tag-constants.mjs +28 -0
- package/dist/common/tag/tag-constants.mjs.map +1 -0
- package/dist/common/tag/tag-types.d.mts +14 -0
- package/dist/common/tag/tag-types.d.mts.map +1 -0
- package/dist/common/tag/tag-types.mjs +2 -0
- package/dist/common/tag/tag-types.mjs.map +1 -0
- package/dist/core-constants.d.mts +89 -0
- package/dist/core-constants.d.mts.map +1 -0
- package/dist/core-constants.mjs +484 -0
- package/dist/core-constants.mjs.map +1 -0
- package/dist/core-helper.d.mts +6 -0
- package/dist/core-helper.d.mts.map +1 -0
- package/dist/core-helper.mjs +28 -0
- package/dist/core-helper.mjs.map +1 -0
- package/dist/core-types.d.mts +520 -0
- package/dist/core-types.d.mts.map +1 -0
- package/dist/core-types.mjs +2 -0
- package/dist/core-types.mjs.map +1 -0
- package/dist/index.d.mts +2 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +3 -0
- package/dist/index.mjs.map +1 -0
- package/dist/witness/app/app-base-v1.d.mts +130 -0
- package/dist/witness/app/app-base-v1.d.mts.map +1 -0
- package/dist/witness/app/app-base-v1.mjs +462 -0
- package/dist/witness/app/app-base-v1.mjs.map +1 -0
- package/dist/witness/app/app-constants.d.mts +10 -0
- package/dist/witness/app/app-constants.d.mts.map +1 -0
- package/dist/witness/app/app-constants.mjs +13 -0
- package/dist/witness/app/app-constants.mjs.map +1 -0
- package/dist/witness/app/app-helper.d.mts +85 -0
- package/dist/witness/app/app-helper.d.mts.map +1 -0
- package/dist/witness/app/app-helper.mjs +258 -0
- package/dist/witness/app/app-helper.mjs.map +1 -0
- package/dist/witness/app/app-types.d.mts +211 -0
- package/dist/witness/app/app-types.d.mts.map +1 -0
- package/dist/witness/app/app-types.mjs +49 -0
- package/dist/witness/app/app-types.mjs.map +1 -0
- package/dist/witness/app/chat-app/chat-app-types.d.mts +18 -0
- package/dist/witness/app/chat-app/chat-app-types.d.mts.map +1 -0
- package/dist/witness/app/chat-app/chat-app-types.mjs +25 -0
- package/dist/witness/app/chat-app/chat-app-types.mjs.map +1 -0
- package/dist/witness/app/flash-app/flash-app-types.d.mts +16 -0
- package/dist/witness/app/flash-app/flash-app-types.d.mts.map +1 -0
- package/dist/witness/app/flash-app/flash-app-types.mjs +23 -0
- package/dist/witness/app/flash-app/flash-app-types.mjs.map +1 -0
- package/dist/witness/app/raw-app/raw-app-types.d.mts +18 -0
- package/dist/witness/app/raw-app/raw-app-types.d.mts.map +1 -0
- package/dist/witness/app/raw-app/raw-app-types.mjs +25 -0
- package/dist/witness/app/raw-app/raw-app-types.mjs.map +1 -0
- package/dist/witness/app/todo-app/todo-app-types.d.ts +33 -0
- package/dist/witness/app/todo-app/todo-app-types.d.ts.map +1 -0
- package/dist/witness/app/todo-app/todo-app-types.js +31 -0
- package/dist/witness/app/todo-app/todo-app-types.js.map +1 -0
- package/dist/witness/robbot/robbot-base-v1.d.ts +432 -0
- package/dist/witness/robbot/robbot-base-v1.d.ts.map +1 -0
- package/dist/witness/robbot/robbot-base-v1.js +1407 -0
- package/dist/witness/robbot/robbot-base-v1.js.map +1 -0
- package/dist/witness/robbot/robbot-constants.d.mts +24 -0
- package/dist/witness/robbot/robbot-constants.d.mts.map +1 -0
- package/dist/witness/robbot/robbot-constants.mjs +24 -0
- package/dist/witness/robbot/robbot-constants.mjs.map +1 -0
- package/dist/witness/robbot/robbot-helper.d.mts +152 -0
- package/dist/witness/robbot/robbot-helper.d.mts.map +1 -0
- package/dist/witness/robbot/robbot-helper.mjs +609 -0
- package/dist/witness/robbot/robbot-helper.mjs.map +1 -0
- package/dist/witness/robbot/robbot-types.d.mts +539 -0
- package/dist/witness/robbot/robbot-types.d.mts.map +1 -0
- package/dist/witness/robbot/robbot-types.mjs +294 -0
- package/dist/witness/robbot/robbot-types.mjs.map +1 -0
- package/dist/witness/space/bootstrap/bootstrap-constants.d.mts +14 -0
- package/dist/witness/space/bootstrap/bootstrap-constants.d.mts.map +1 -0
- package/dist/witness/space/bootstrap/bootstrap-constants.mjs +15 -0
- package/dist/witness/space/bootstrap/bootstrap-constants.mjs.map +1 -0
- package/dist/witness/space/inner-space-v1.d.ts +63 -0
- package/dist/witness/space/inner-space-v1.d.ts.map +1 -0
- package/dist/witness/space/inner-space-v1.js +356 -0
- package/dist/witness/space/inner-space-v1.js.map +1 -0
- package/dist/witness/space/outer-space/outer-space-constants.d.mts +2 -0
- package/dist/witness/space/outer-space/outer-space-constants.d.mts.map +1 -0
- package/dist/witness/space/outer-space/outer-space-constants.mjs +2 -0
- package/dist/witness/space/outer-space/outer-space-constants.mjs.map +1 -0
- package/dist/witness/space/outer-space/outer-space-helper.d.mts +28 -0
- package/dist/witness/space/outer-space/outer-space-helper.d.mts.map +1 -0
- package/dist/witness/space/outer-space/outer-space-helper.mjs +87 -0
- package/dist/witness/space/outer-space/outer-space-helper.mjs.map +1 -0
- package/dist/witness/space/outer-space/outer-space-types.d.mts +548 -0
- package/dist/witness/space/outer-space/outer-space-types.d.mts.map +1 -0
- package/dist/witness/space/outer-space/outer-space-types.mjs +118 -0
- package/dist/witness/space/outer-space/outer-space-types.mjs.map +1 -0
- package/dist/witness/space/space-base-v1.d.mts +147 -0
- package/dist/witness/space/space-base-v1.d.mts.map +1 -0
- package/dist/witness/space/space-base-v1.mjs +350 -0
- package/dist/witness/space/space-base-v1.mjs.map +1 -0
- package/dist/witness/space/space-constants.d.mts +181 -0
- package/dist/witness/space/space-constants.d.mts.map +1 -0
- package/dist/witness/space/space-constants.mjs +192 -0
- package/dist/witness/space/space-constants.mjs.map +1 -0
- package/dist/witness/space/space-helper.d.mts +666 -0
- package/dist/witness/space/space-helper.d.mts.map +1 -0
- package/dist/witness/space/space-helper.mjs +2830 -0
- package/dist/witness/space/space-helper.mjs.map +1 -0
- package/dist/witness/space/space-types.d.mts +422 -0
- package/dist/witness/space/space-types.d.mts.map +1 -0
- package/dist/witness/space/space-types.mjs +52 -0
- package/dist/witness/space/space-types.mjs.map +1 -0
- package/dist/witness/witness-base-v1.d.ts +144 -0
- package/dist/witness/witness-base-v1.d.ts.map +1 -0
- package/dist/witness/witness-base-v1.js +300 -0
- package/dist/witness/witness-base-v1.js.map +1 -0
- package/dist/witness/witness-constants.d.mts +3 -0
- package/dist/witness/witness-constants.d.mts.map +1 -0
- package/dist/witness/witness-constants.mjs +3 -0
- package/dist/witness/witness-constants.mjs.map +1 -0
- package/dist/witness/witness-form-builder.d.mts +45 -0
- package/dist/witness/witness-form-builder.d.mts.map +1 -0
- package/dist/witness/witness-form-builder.mjs +95 -0
- package/dist/witness/witness-form-builder.mjs.map +1 -0
- package/dist/witness/witness-helper.d.mts +89 -0
- package/dist/witness/witness-helper.d.mts.map +1 -0
- package/dist/witness/witness-helper.mjs +229 -0
- package/dist/witness/witness-helper.mjs.map +1 -0
- package/dist/witness/witness-types.d.mts +211 -0
- package/dist/witness/witness-types.d.mts.map +1 -0
- package/dist/witness/witness-types.mjs +2 -0
- package/dist/witness/witness-types.mjs.map +1 -0
- package/jasmine-browser.json +18 -0
- package/jasmine.json +6 -0
- package/package.json +67 -0
- package/src/assumptions.spec.mts +45 -0
- package/src/common/aws-constants.mts +5 -0
- package/src/common/bin/bin-types.mts +17 -0
- package/src/common/cache/cache-types.mts +53 -0
- package/src/common/comment/comment-constants.mts +10 -0
- package/src/common/comment/comment-helper.mts +211 -0
- package/src/common/comment/comment-types.mts +19 -0
- package/src/common/display/display-helper.mts +88 -0
- package/src/common/display/display-types.mts +108 -0
- package/src/common/encrypt/encrypt-constants.mts +28 -0
- package/src/common/encrypt/encrypt-types.mts +130 -0
- package/src/common/error/error-constants.mts +8 -0
- package/src/common/error/error-helper.mts +155 -0
- package/src/common/error/error-types.mts +62 -0
- package/src/common/form/form-helper.mts +253 -0
- package/src/common/form/form-items.mts +236 -0
- package/src/common/import-export/import-export-types.mts +18 -0
- package/src/common/legacy/about-legacy.md +0 -0
- package/src/common/legacy/legacy-types.mts +0 -0
- package/src/common/link/link-constants.mts +1 -0
- package/src/common/link/link-helper.mts +155 -0
- package/src/common/link/link-types.mts +16 -0
- package/src/common/other/graph-helper.mts +853 -0
- package/src/common/other/ibgib-helper.mts +671 -0
- package/src/common/other/other-constants.mts +76 -0
- package/src/common/other/other-types.mts +186 -0
- package/src/common/other/svg-constants.mts +1 -0
- package/src/common/other/svg-helper.mts +238 -0
- package/src/common/pic/pic-constants.mts +13 -0
- package/src/common/pic/pic-helper.mts +295 -0
- package/src/common/pic/pic-types.mts +29 -0
- package/src/common/root/root-constants.mts +41 -0
- package/src/common/root/root-types.mts +8 -0
- package/src/common/tag/tag-constants.mts +34 -0
- package/src/common/tag/tag-types.mts +19 -0
- package/src/core-constants.mts +506 -0
- package/src/core-helper.mts +33 -0
- package/src/core-types.mts +519 -0
- package/src/helper.spec.mts +64 -0
- package/src/index.mts +1 -0
- package/src/witness/app/app-base-v1.mts +584 -0
- package/src/witness/app/app-constants.mts +16 -0
- package/src/witness/app/app-helper.mts +322 -0
- package/src/witness/app/app-types.mts +252 -0
- package/src/witness/app/chat-app/chat-app-types.mts +40 -0
- package/src/witness/app/flash-app/flash-app-types.mts +38 -0
- package/src/witness/app/raw-app/raw-app-types.mts +40 -0
- package/src/witness/app/todo-app/todo-app-types.ts +59 -0
- package/src/witness/robbot/robbot-base-v1.ts +1531 -0
- package/src/witness/robbot/robbot-constants.mts +25 -0
- package/src/witness/robbot/robbot-helper.mts +676 -0
- package/src/witness/robbot/robbot-helper.spec.mts +135 -0
- package/src/witness/robbot/robbot-types.mts +797 -0
- package/src/witness/space/bootstrap/bootstrap-constants.mts +15 -0
- package/src/witness/space/inner-space-v1.ts +372 -0
- package/src/witness/space/outer-space/outer-space-constants.mts +1 -0
- package/src/witness/space/outer-space/outer-space-helper.mts +91 -0
- package/src/witness/space/outer-space/outer-space-types.mts +627 -0
- package/src/witness/space/space-base-v1.mts +414 -0
- package/src/witness/space/space-constants.mts +208 -0
- package/src/witness/space/space-helper.mts +3242 -0
- package/src/witness/space/space-types.mts +476 -0
- package/src/witness/witness-base-v1.ts +325 -0
- package/src/witness/witness-constants.mts +2 -0
- package/src/witness/witness-form-builder.mts +128 -0
- package/src/witness/witness-helper.mts +256 -0
- package/src/witness/witness-types.mts +249 -0
- package/tsconfig.json +15 -0
- package/tsconfig.test.json +10 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { GIB } from '@ibgib/ts-gib/dist/V1/index.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* See {@link BootstrapIbGib}
|
|
5
|
+
*/
|
|
6
|
+
export const BOOTSTRAP_IBGIB_ADDR = `bootstrap^${GIB}`;
|
|
7
|
+
/**
|
|
8
|
+
* {@see BootstrapData}
|
|
9
|
+
*/
|
|
10
|
+
export const BOOTSTRAP_DATA_DEFAULT_SPACE_ID_KEY = `defaultSpaceId`;
|
|
11
|
+
/**
|
|
12
|
+
* Key for index tracking known spaceIds in a bootstrap ibgib.
|
|
13
|
+
* {@see BootstrapData}
|
|
14
|
+
*/
|
|
15
|
+
export const BOOTSTRAP_DATA_KNOWN_SPACE_IDS_KEY = `spaceIds`;
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
import { getIbGibAddr, IbGibAddr } from '@ibgib/ts-gib';
|
|
2
|
+
import {
|
|
3
|
+
IbGib_V1, IbGibRel8ns_V1, IbGibData_V1, sha256v1, Factory_V1, ROOT,
|
|
4
|
+
} from '@ibgib/ts-gib/dist/V1/index.mjs';
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
import { SpaceBase_V1 } from './space-base-v1.mjs';
|
|
8
|
+
import {
|
|
9
|
+
IbGibSpaceData, IbGibSpaceOptionsData, IbGibSpaceOptionsRel8ns,
|
|
10
|
+
IbGibSpaceOptionsIbGib, IbGibSpaceResultData, IbGibSpaceResultRel8ns,
|
|
11
|
+
IbGibSpaceResultIbGib
|
|
12
|
+
} from './space-types.mjs';
|
|
13
|
+
import { getSpaceIb } from './space-helper.mjs';
|
|
14
|
+
import { validateIbGibIntrinsically } from '@ibgib/ts-gib/dist/V1/validate-helper.mjs';
|
|
15
|
+
import { GLOBAL_LOG_A_LOT } from '../../core-constants.mjs';
|
|
16
|
+
|
|
17
|
+
const logalot = GLOBAL_LOG_A_LOT || false;
|
|
18
|
+
|
|
19
|
+
export interface InnerSpace_V1_Data extends IbGibSpaceData {
|
|
20
|
+
// /**
|
|
21
|
+
// * If true, then this will include this space's ibGib's addrs (i.e. index)
|
|
22
|
+
// * in its {@link data} property.
|
|
23
|
+
// */
|
|
24
|
+
// trackAddrs: boolean;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Base class convenience for a "local" space
|
|
29
|
+
* (i.e. analogous to residing on the same computer as the app).
|
|
30
|
+
*
|
|
31
|
+
* Base implementation defaults to a naive in-memory internal object that
|
|
32
|
+
* tracks ibgibs.
|
|
33
|
+
*/
|
|
34
|
+
export class InnerSpace_V1<
|
|
35
|
+
TIbGib extends IbGib_V1 = IbGib_V1,
|
|
36
|
+
TData extends InnerSpace_V1_Data = InnerSpace_V1_Data,
|
|
37
|
+
TRel8ns extends IbGibRel8ns_V1 = IbGibRel8ns_V1
|
|
38
|
+
> extends SpaceBase_V1<
|
|
39
|
+
TIbGib,
|
|
40
|
+
IbGibSpaceOptionsData,
|
|
41
|
+
IbGibSpaceOptionsRel8ns,
|
|
42
|
+
IbGibSpaceOptionsIbGib<TIbGib, IbGibSpaceOptionsData, IbGibSpaceOptionsRel8ns>,
|
|
43
|
+
IbGibSpaceResultData,
|
|
44
|
+
IbGibSpaceResultRel8ns,
|
|
45
|
+
IbGibSpaceResultIbGib<TIbGib, IbGibSpaceResultData, IbGibSpaceResultRel8ns>,
|
|
46
|
+
TData,
|
|
47
|
+
TRel8ns
|
|
48
|
+
> {
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Log context for convenience with logging. (Ignore if you don't want to use this.)
|
|
52
|
+
*/
|
|
53
|
+
protected lc: string = `[${InnerSpace_V1.name}]`;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* In-memory store of ibgibs stored in this inner space object.
|
|
57
|
+
*
|
|
58
|
+
* @see {@link rel8ns} in {@link WitnessBase_V1} base class.
|
|
59
|
+
*/
|
|
60
|
+
ibGibs: { [key: string]: TIbGib } = {};
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
constructor(
|
|
65
|
+
// I have this following commented out. I copied over some of this behavior from the keystone lib
|
|
66
|
+
// and I'm not sure what I'm keeping here.
|
|
67
|
+
// NOTE: (I refactored the name "repo" to "space" because it seemed to fit better.)
|
|
68
|
+
// /**
|
|
69
|
+
// * Default predicate value when putting an unknown ibGib.
|
|
70
|
+
// *
|
|
71
|
+
// * ## notes
|
|
72
|
+
// *
|
|
73
|
+
// * So when a repo witnesses another ibGib, it either defaults to
|
|
74
|
+
// * storing that ibGib or not storing that ibGib. This is what that
|
|
75
|
+
// * is referring to. If it's optimistic, then it stores any ibGib by
|
|
76
|
+
// * default and it passes its put predicate.
|
|
77
|
+
// */
|
|
78
|
+
// public optimisticPut: boolean = true,
|
|
79
|
+
initialData: TData,
|
|
80
|
+
initialRel8ns: TRel8ns,
|
|
81
|
+
) {
|
|
82
|
+
super(initialData, initialRel8ns);
|
|
83
|
+
|
|
84
|
+
const lc = `${this.lc}[ctor]`;
|
|
85
|
+
try {
|
|
86
|
+
if (logalot) { console.log(`${lc} starting...`); }
|
|
87
|
+
this.initialize();
|
|
88
|
+
} catch (error) {
|
|
89
|
+
console.error(`${lc} ${error.message}`);
|
|
90
|
+
throw error;
|
|
91
|
+
} finally {
|
|
92
|
+
if (logalot) { console.log(`${lc} complete.`); }
|
|
93
|
+
}
|
|
94
|
+
this.ib = `witness space ${InnerSpace_V1.name}`;
|
|
95
|
+
this.ib = getSpaceIb({ space: this, classname: InnerSpace_V1.name });
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Initializes to default space values.
|
|
100
|
+
*/
|
|
101
|
+
protected initialize(): void {
|
|
102
|
+
const lc = `${this.lc}[${this.initialize.name}]`;
|
|
103
|
+
try {
|
|
104
|
+
if (logalot) { console.log(`${lc} starting...`); }
|
|
105
|
+
// if (!this.data) { this.data = h.clone(DEFAULT_IONIC_SPACE_DATA_V1); }
|
|
106
|
+
// if (!this.data.baseDir) { this.data.baseDir = IBGIB_BASE_DIR; }
|
|
107
|
+
|
|
108
|
+
this.ib = getSpaceIb({ space: this, classname: InnerSpace_V1.name });
|
|
109
|
+
} catch (error) {
|
|
110
|
+
console.error(`${lc} ${error.message}`);
|
|
111
|
+
} finally {
|
|
112
|
+
if (logalot) { console.log(`${lc} complete.`); }
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
protected async getImpl(arg: IbGibSpaceOptionsIbGib<TIbGib, IbGibSpaceOptionsData, IbGibSpaceOptionsRel8ns>):
|
|
117
|
+
Promise<IbGibSpaceResultIbGib<TIbGib, IbGibSpaceResultData, IbGibSpaceResultRel8ns>> {
|
|
118
|
+
const lc = `${this.lc}[${this.get.name}]`;
|
|
119
|
+
const resultData: IbGibSpaceResultData = { optsAddr: getIbGibAddr({ ibGib: arg }), }
|
|
120
|
+
try {
|
|
121
|
+
const { ibGibAddrs } = arg.data!;
|
|
122
|
+
if (!ibGibAddrs) { throw new Error(`(UNEXPECTED) arg.data.ibGibAddrs falsy? (E: 33dcc212788221c601bf2258eb1cd523)`); }
|
|
123
|
+
const resultIbGibs: TIbGib[] = [];
|
|
124
|
+
let notFoundIbGibAddrs: IbGibAddr[] | undefined = undefined;
|
|
125
|
+
for (let i = 0; i < ibGibAddrs.length; i++) {
|
|
126
|
+
const addr = ibGibAddrs[i];
|
|
127
|
+
if (Object.keys(this.ibGibs).includes(addr)) {
|
|
128
|
+
resultIbGibs.push(this.ibGibs[addr]);
|
|
129
|
+
} else {
|
|
130
|
+
if (!notFoundIbGibAddrs) { notFoundIbGibAddrs = []; }
|
|
131
|
+
notFoundIbGibAddrs.push(addr);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (notFoundIbGibAddrs && notFoundIbGibAddrs.length > 0) {
|
|
135
|
+
resultData.addrsNotFound = notFoundIbGibAddrs;
|
|
136
|
+
resultData.success = false;
|
|
137
|
+
}
|
|
138
|
+
} catch (error) {
|
|
139
|
+
console.error(`${lc} error: ${error.message}`);
|
|
140
|
+
resultData.errors = [error.message];
|
|
141
|
+
}
|
|
142
|
+
const result = await this.resulty({ resultData });
|
|
143
|
+
return result;
|
|
144
|
+
}
|
|
145
|
+
protected async putImpl(arg: IbGibSpaceOptionsIbGib<TIbGib, IbGibSpaceOptionsData, IbGibSpaceOptionsRel8ns>):
|
|
146
|
+
Promise<IbGibSpaceResultIbGib<TIbGib, IbGibSpaceResultData, IbGibSpaceResultRel8ns>> {
|
|
147
|
+
const lc = `${this.lc}[${this.put.name}]`;
|
|
148
|
+
const resultData: IbGibSpaceResultData = { optsAddr: getIbGibAddr({ ibGib: arg }), }
|
|
149
|
+
try {
|
|
150
|
+
const ibGibs = arg.ibGibs || [];
|
|
151
|
+
const addrsAlreadyHave: IbGibAddr[] = [];
|
|
152
|
+
|
|
153
|
+
await this.putIbGibsImpl({ ibGibs, addrsAlreadyHave });
|
|
154
|
+
|
|
155
|
+
if (addrsAlreadyHave.length > 0) {
|
|
156
|
+
resultData.addrsAlreadyHave = addrsAlreadyHave;
|
|
157
|
+
resultData.warnings = (resultData.warnings || []).concat([`${lc} already had addr(s).`]);
|
|
158
|
+
}
|
|
159
|
+
resultData.success = true;
|
|
160
|
+
} catch (error) {
|
|
161
|
+
console.error(`${lc} error: ${error.message}`);
|
|
162
|
+
resultData.errors = [error.message];
|
|
163
|
+
resultData.success = false;
|
|
164
|
+
}
|
|
165
|
+
const result = await this.resulty({ resultData });
|
|
166
|
+
return result;
|
|
167
|
+
}
|
|
168
|
+
protected async putIbGibsImpl({
|
|
169
|
+
ibGibs,
|
|
170
|
+
addrsAlreadyHave,
|
|
171
|
+
}: {
|
|
172
|
+
ibGibs: TIbGib[],
|
|
173
|
+
addrsAlreadyHave: IbGibAddr[],
|
|
174
|
+
}): Promise<void> {
|
|
175
|
+
const lc = `${this.lc}[${this.putIbGibsImpl.name}]`;
|
|
176
|
+
try {
|
|
177
|
+
if (logalot) { console.log(`${lc} starting...`); }
|
|
178
|
+
if (!ibGibs) { throw new Error(`ibGibs required. (E: cd479b15097d45a5bf0c8ca13c9f3487)`); }
|
|
179
|
+
if (!addrsAlreadyHave) { throw new Error(`addrsAlreadyHave required. (E: 18b2c8eef27bc267c55755e272367e22)`); }
|
|
180
|
+
|
|
181
|
+
for (let i = 0; i < ibGibs?.length; i++) {
|
|
182
|
+
const ibGib = ibGibs[i];
|
|
183
|
+
const addr = getIbGibAddr({ ibGib });
|
|
184
|
+
if (!Object.keys(this.ibGibs).includes(addr)) {
|
|
185
|
+
this.ibGibs[addr] = ibGib;
|
|
186
|
+
} else {
|
|
187
|
+
addrsAlreadyHave.push(addr);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
} catch (error) {
|
|
191
|
+
console.error(`${lc} ${error.message}`);
|
|
192
|
+
throw error;
|
|
193
|
+
} finally {
|
|
194
|
+
if (logalot) { console.log(`${lc} complete.`); }
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
protected async deleteImpl(arg: IbGibSpaceOptionsIbGib<TIbGib, IbGibSpaceOptionsData, IbGibSpaceOptionsRel8ns>):
|
|
200
|
+
Promise<IbGibSpaceResultIbGib<TIbGib, IbGibSpaceResultData, IbGibSpaceResultRel8ns>> {
|
|
201
|
+
const lc = `${this.lc}[${this.delete.name}]`;
|
|
202
|
+
const resultData: IbGibSpaceResultData = { optsAddr: getIbGibAddr({ ibGib: arg }), }
|
|
203
|
+
try {
|
|
204
|
+
const addrsNotFound: IbGibAddr[] = [];
|
|
205
|
+
const addrsDeleted: IbGibAddr[] = [];
|
|
206
|
+
const ibGibAddrs = arg.data!.ibGibAddrs || [];
|
|
207
|
+
for (let i = 0; i < ibGibAddrs.length; i++) {
|
|
208
|
+
const addr = ibGibAddrs[i];
|
|
209
|
+
if (Object.keys(this.ibGibs).includes(addr)) {
|
|
210
|
+
delete this.ibGibs[addr];
|
|
211
|
+
addrsDeleted.push(addr);
|
|
212
|
+
} else {
|
|
213
|
+
addrsNotFound.push(addr);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
if (addrsNotFound.length > 0) {
|
|
217
|
+
resultData.addrsNotFound = addrsNotFound.concat();
|
|
218
|
+
const warningMsg = `${lc} some addrs (${addrsNotFound.length}) not found: ${addrsNotFound}`;
|
|
219
|
+
resultData.warnings = (resultData.warnings || []).concat([warningMsg]);
|
|
220
|
+
}
|
|
221
|
+
resultData.success = true;
|
|
222
|
+
resultData.addrs = addrsDeleted.concat();
|
|
223
|
+
} catch (error) {
|
|
224
|
+
console.error(`${lc} error: ${error.message}`);
|
|
225
|
+
resultData.errors = [error.message];
|
|
226
|
+
resultData.success = false;
|
|
227
|
+
}
|
|
228
|
+
try {
|
|
229
|
+
const result = await this.resulty({ resultData });
|
|
230
|
+
return result;
|
|
231
|
+
} catch (error) {
|
|
232
|
+
console.error(`${lc} error forming result ibGib. error: ${error.message}`);
|
|
233
|
+
throw error;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
protected async getAddrsImpl(arg: IbGibSpaceOptionsIbGib<TIbGib, IbGibSpaceOptionsData, IbGibSpaceOptionsRel8ns>):
|
|
237
|
+
Promise<IbGibSpaceResultIbGib<TIbGib, IbGibSpaceResultData, IbGibSpaceResultRel8ns>> {
|
|
238
|
+
const lc = `${this.lc}[${this.getAddrs.name}]`;
|
|
239
|
+
const resultData: IbGibSpaceResultData = { optsAddr: getIbGibAddr({ ibGib: arg }), }
|
|
240
|
+
try {
|
|
241
|
+
resultData.addrs = Object.keys(this.ibGibs).concat();
|
|
242
|
+
resultData.success = true;
|
|
243
|
+
} catch (error) {
|
|
244
|
+
console.error(`${lc} error: ${error.message}`);
|
|
245
|
+
resultData.errors = [error.message];
|
|
246
|
+
resultData.success = false;
|
|
247
|
+
}
|
|
248
|
+
const result = await this.resulty({ resultData });
|
|
249
|
+
return result;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Performs a naive `exists: boolean` or `includes: boolean` analog.
|
|
253
|
+
*
|
|
254
|
+
* If all of the addresses are found, will result in `success` and `can` being `true`.
|
|
255
|
+
*
|
|
256
|
+
* Else, `can` will be falsy, and `addrsNotFound` will be populated with all/some of
|
|
257
|
+
* the queried addresses.
|
|
258
|
+
*
|
|
259
|
+
* ## notes
|
|
260
|
+
*
|
|
261
|
+
* This does not take authorization into account in any way. it's a simple, naive in-memory
|
|
262
|
+
* storage ibGib witness.
|
|
263
|
+
*
|
|
264
|
+
* @returns result ibGib whose primary value is `can`
|
|
265
|
+
*/
|
|
266
|
+
protected async canGetImpl(arg: IbGibSpaceOptionsIbGib<TIbGib, IbGibSpaceOptionsData, IbGibSpaceOptionsRel8ns>):
|
|
267
|
+
Promise<IbGibSpaceResultIbGib<TIbGib, IbGibSpaceResultData, IbGibSpaceResultRel8ns>> {
|
|
268
|
+
const lc = `${this.lc}[${this.canGet.name}]`;
|
|
269
|
+
const resultData: IbGibSpaceResultData = { optsAddr: getIbGibAddr({ ibGib: arg }), }
|
|
270
|
+
try {
|
|
271
|
+
const { ibGibAddrs } = arg.data!;
|
|
272
|
+
if (!ibGibAddrs) { throw new Error(`(UNEXPECTED) arg.data.ibGibAddrs falsy? (E: d94c64744037ca443589fca71e121123)`); }
|
|
273
|
+
let notFoundIbGibAddrs: IbGibAddr[] | undefined = undefined;
|
|
274
|
+
for (let i = 0; i < ibGibAddrs.length; i++) {
|
|
275
|
+
const addr = ibGibAddrs[i];
|
|
276
|
+
if (!Object.keys(this.ibGibs).includes(addr)) {
|
|
277
|
+
if (!notFoundIbGibAddrs) { notFoundIbGibAddrs = []; }
|
|
278
|
+
notFoundIbGibAddrs.push(addr);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
resultData.success = true;
|
|
282
|
+
if (notFoundIbGibAddrs && notFoundIbGibAddrs.length > 0) {
|
|
283
|
+
resultData.addrsNotFound = notFoundIbGibAddrs;
|
|
284
|
+
resultData.can = false;
|
|
285
|
+
} else {
|
|
286
|
+
resultData.can = true;
|
|
287
|
+
}
|
|
288
|
+
} catch (error) {
|
|
289
|
+
console.error(`${lc} error: ${error.message}`);
|
|
290
|
+
resultData.errors = [error.message];
|
|
291
|
+
}
|
|
292
|
+
const result = await this.resulty({ resultData });
|
|
293
|
+
return result;
|
|
294
|
+
}
|
|
295
|
+
protected async canPutImpl(arg: IbGibSpaceOptionsIbGib<TIbGib, IbGibSpaceOptionsData, IbGibSpaceOptionsRel8ns>):
|
|
296
|
+
Promise<IbGibSpaceResultIbGib<TIbGib, IbGibSpaceResultData, IbGibSpaceResultRel8ns>> {
|
|
297
|
+
const lc = `${this.lc}[${this.canPut.name}]`;
|
|
298
|
+
const resultData: IbGibSpaceResultData = { optsAddr: getIbGibAddr({ ibGib: arg }), }
|
|
299
|
+
try {
|
|
300
|
+
const ibGibs = arg.ibGibs || [];
|
|
301
|
+
const addrsAlreadyHave: IbGibAddr[] = [];
|
|
302
|
+
for (let i = 0; i < ibGibs?.length; i++) {
|
|
303
|
+
const ibGib = ibGibs[i];
|
|
304
|
+
const addr = getIbGibAddr({ ibGib });
|
|
305
|
+
if (Object.keys(this.ibGibs).includes(addr)) {
|
|
306
|
+
addrsAlreadyHave.push(addr);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
resultData.success = true;
|
|
310
|
+
if (addrsAlreadyHave.length > 0) {
|
|
311
|
+
resultData.addrsAlreadyHave = addrsAlreadyHave;
|
|
312
|
+
resultData.warnings = (resultData.warnings || []).concat([`${lc} already have addr(s).`]);
|
|
313
|
+
}
|
|
314
|
+
resultData.can = ibGibs.length > addrsAlreadyHave.length;
|
|
315
|
+
} catch (error) {
|
|
316
|
+
console.error(`${lc} error: ${error.message}`);
|
|
317
|
+
resultData.errors = [error.message];
|
|
318
|
+
}
|
|
319
|
+
const result = await this.resulty({ resultData });
|
|
320
|
+
return result;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
protected async canDeleteImpl(arg: IbGibSpaceOptionsIbGib<TIbGib, IbGibSpaceOptionsData, IbGibSpaceOptionsRel8ns>):
|
|
324
|
+
Promise<IbGibSpaceResultIbGib<TIbGib, IbGibSpaceResultData, IbGibSpaceResultRel8ns>> {
|
|
325
|
+
const lc = `${this.lc}[${this.canDeleteImpl.name}]`;
|
|
326
|
+
const resultData: IbGibSpaceResultData = { optsAddr: getIbGibAddr({ ibGib: arg }), }
|
|
327
|
+
try {
|
|
328
|
+
throw new Error('not implemented');
|
|
329
|
+
} catch (error) {
|
|
330
|
+
console.error(`${lc} error: ${error.message}`);
|
|
331
|
+
resultData.errors = [error.message];
|
|
332
|
+
resultData.success = false;
|
|
333
|
+
}
|
|
334
|
+
try {
|
|
335
|
+
const result = await this.resulty({ resultData });
|
|
336
|
+
return result;
|
|
337
|
+
} catch (error) {
|
|
338
|
+
console.error(`${lc} error forming result ibGib. error: ${error.message}`);
|
|
339
|
+
throw error;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
protected async persistOptsAndResultIbGibs({
|
|
343
|
+
arg,
|
|
344
|
+
result
|
|
345
|
+
}: {
|
|
346
|
+
arg: IbGibSpaceOptionsIbGib<TIbGib, IbGibSpaceOptionsData, IbGibSpaceOptionsRel8ns>,
|
|
347
|
+
result: IbGibSpaceResultIbGib<TIbGib, IbGibSpaceResultData, IbGibSpaceResultRel8ns>,
|
|
348
|
+
}): Promise<void> {
|
|
349
|
+
const lc = `${this.lc}[${this.persistOptsAndResultIbGibs.name}]`;
|
|
350
|
+
try {
|
|
351
|
+
if (logalot || this.data?.trace) { console.log(`${lc} starting...`); }
|
|
352
|
+
if (logalot || this.data?.trace) {
|
|
353
|
+
console.log(`${lc} doing arg?.data?.cmd: ${arg?.data?.cmd}, result?.data?.success: ${result?.data?.success}`);
|
|
354
|
+
}
|
|
355
|
+
let argValidationErrors = await validateIbGibIntrinsically({ ibGib: arg });
|
|
356
|
+
if (argValidationErrors && argValidationErrors.length > 0) { throw new Error(`invalid arg. cannot persist. (E: 015d38de71a3407f9d77fc4ed3404bf0)`); }
|
|
357
|
+
let resultValidationErrors = result ?
|
|
358
|
+
await validateIbGibIntrinsically({ ibGib: result }) :
|
|
359
|
+
null;
|
|
360
|
+
if (resultValidationErrors && resultValidationErrors.length > 0) { throw new Error(`invalid arg. cannot persist. (E: 015d38de71a3407f9d77fc4ed3404bf0)`); }
|
|
361
|
+
|
|
362
|
+
const ibGibs = [arg, result ?? ROOT];
|
|
363
|
+
await this.putIbGibsImpl({ ibGibs: <any[]>ibGibs, addrsAlreadyHave: [] });
|
|
364
|
+
} catch (error) {
|
|
365
|
+
console.error(`${lc} ${error.message}`);
|
|
366
|
+
// this is a best effort storage, so we do not rethrow
|
|
367
|
+
// throw error;
|
|
368
|
+
} finally {
|
|
369
|
+
if (logalot || this.data?.trace) { console.log(`${lc} complete.`); }
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const OUTER_SPACE_DEFAULT_IB_DELIMITER = ' ';
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module outer-space
|
|
3
|
+
* Outer spaces are spaces connecting local inner spaces.
|
|
4
|
+
* ATOW there is just sync spaces, but definitely just the beginning.
|
|
5
|
+
*
|
|
6
|
+
* ## on future implementations, CRDT-like behavior
|
|
7
|
+
*
|
|
8
|
+
* I just realized that when merging, I can actually create a meta transform
|
|
9
|
+
* ibgib to maintain the order of transforms.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { Ib, } from '@ibgib/ts-gib';
|
|
13
|
+
|
|
14
|
+
import {
|
|
15
|
+
OuterSpaceSubtype, OuterSpaceType,
|
|
16
|
+
StatusCode, StatusIbInfo,
|
|
17
|
+
VALID_OUTER_SPACE_SUBTYPES, VALID_OUTER_SPACE_TYPES,
|
|
18
|
+
} from './outer-space-types.mjs';
|
|
19
|
+
import { OUTER_SPACE_DEFAULT_IB_DELIMITER } from './outer-space-constants.mjs';
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Composes ib with given params info.
|
|
24
|
+
*
|
|
25
|
+
* @returns ib string with given info encoded
|
|
26
|
+
*/
|
|
27
|
+
export function getStatusIb({
|
|
28
|
+
sagaId,
|
|
29
|
+
statusCode,
|
|
30
|
+
spaceType,
|
|
31
|
+
spaceSubtype,
|
|
32
|
+
delimiter,
|
|
33
|
+
}: StatusIbInfo): string {
|
|
34
|
+
const lc = `[${getStatusIb.name}]`;
|
|
35
|
+
try {
|
|
36
|
+
if (!sagaId) { throw new Error(`sagaId required. (E: cfc923bb29ee4aa788e947b6416740e6)`); }
|
|
37
|
+
if (statusCode === null || statusCode === undefined) { throw new Error(`status code required. (E: 4e0d232a9955496695012623c2e17ca2)`); }
|
|
38
|
+
if (!Object.values(StatusCode).includes(statusCode)) { throw new Error(`invalid status code (${statusCode}) (E: 91d7655424c44d9680fff099ee2b54d2)`); }
|
|
39
|
+
if (!spaceType) { throw new Error(`spaceType required. (E: 86e98694a56a4f599e98e50abf0eed43)`); }
|
|
40
|
+
if (!spaceSubtype) { throw new Error(`spaceSubtype required. (E: 4857d4677ee34e95aeb2251dd633909e)`); }
|
|
41
|
+
|
|
42
|
+
delimiter = delimiter || OUTER_SPACE_DEFAULT_IB_DELIMITER;
|
|
43
|
+
|
|
44
|
+
return `status ${sagaId} ${statusCode} ${spaceType} ${spaceSubtype}`;
|
|
45
|
+
} catch (error) {
|
|
46
|
+
console.error(`${lc} ${error.message}`);
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Parses the given `statusIb` and returns the info object.
|
|
53
|
+
*
|
|
54
|
+
* @returns info from parsing the status ib
|
|
55
|
+
*/
|
|
56
|
+
export function getStatusIbInfo({
|
|
57
|
+
statusIb,
|
|
58
|
+
delimiter,
|
|
59
|
+
}: {
|
|
60
|
+
statusIb: Ib,
|
|
61
|
+
delimiter?: string,
|
|
62
|
+
}): StatusIbInfo {
|
|
63
|
+
const lc = `[${getStatusIb.name}]`;
|
|
64
|
+
try {
|
|
65
|
+
if (!statusIb) { throw new Error(`statusIb required. (E: 09e23e8622cf456cadb0c3d0aadc3be9)`); }
|
|
66
|
+
|
|
67
|
+
delimiter = delimiter || OUTER_SPACE_DEFAULT_IB_DELIMITER;
|
|
68
|
+
|
|
69
|
+
// atow `status ${sagaId} ${statusCode} ${spaceType} ${spaceSubtype}`;
|
|
70
|
+
const pieces = statusIb.split(delimiter);
|
|
71
|
+
|
|
72
|
+
const sagaId = pieces[1];
|
|
73
|
+
if (sagaId === null || sagaId === undefined) { throw new Error(`sagaId is null/undefined. (E: 5de2861a6afb48e1a1c89d0402a4ea63)`); }
|
|
74
|
+
|
|
75
|
+
const statusCode = pieces[2] as StatusCode; // tenatively cast as StatusCode
|
|
76
|
+
if (!Object.values(StatusCode).includes(statusCode)) { throw new Error(`invalid/unknown status code (${statusCode}) (E: 7580860df7b344b3992148552e80a85e)`); }
|
|
77
|
+
|
|
78
|
+
const spaceType = pieces[3] as OuterSpaceType;
|
|
79
|
+
if (spaceType === null || spaceType === undefined) { throw new Error(`spaceType is null/undefined. (E: 12473d35e77b451bb59bb05c03cb8b64)`); }
|
|
80
|
+
if (!VALID_OUTER_SPACE_TYPES.includes(spaceType)) { throw new Error(`invalid/unknown spaceType (${spaceType}) (E: d3ba9add427f49dda34f265f3225d9db)`); }
|
|
81
|
+
|
|
82
|
+
const spaceSubtype = pieces[4] as OuterSpaceSubtype;
|
|
83
|
+
if (spaceSubtype === null || spaceSubtype === undefined) { throw new Error(`spaceSubtype is null/undefined. (E: 6da7ae919d0b4a22b4ee685520b6c946)`); }
|
|
84
|
+
if (!VALID_OUTER_SPACE_SUBTYPES.includes(spaceSubtype)) { throw new Error(`invalid/unknown spaceSubtype (${spaceSubtype}) (E: 703ed1aee44447a294b3e1cf0984baba)`); }
|
|
85
|
+
|
|
86
|
+
return { statusCode, spaceType, spaceSubtype, sagaId, delimiter };
|
|
87
|
+
} catch (error) {
|
|
88
|
+
console.error(`${lc} ${error.message}`);
|
|
89
|
+
throw error;
|
|
90
|
+
}
|
|
91
|
+
}
|