@sprucelabs/spruce-heartwood-utils 6.0.5 → 6.4.0
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/build/esm/index-module.d.ts +2 -1
- package/build/esm/index-module.js +2 -1
- package/build/esm/viewControllers/CardRegistrar.d.ts +33 -0
- package/build/esm/viewControllers/CardRegistrar.js +61 -0
- package/build/{RemoteViewControllerFactory.d.ts → esm/viewControllers/RemoteViewControllerFactory.d.ts} +1 -1
- package/build/esm/{RemoteViewControllerFactory.js → viewControllers/RemoteViewControllerFactory.js} +0 -0
- package/build/index-module.d.ts +2 -1
- package/build/index-module.js +4 -2
- package/build/viewControllers/CardRegistrar.d.ts +33 -0
- package/build/viewControllers/CardRegistrar.js +57 -0
- package/build/viewControllers/RemoteViewControllerFactory.d.ts +25 -0
- package/build/{RemoteViewControllerFactory.js → viewControllers/RemoteViewControllerFactory.js} +0 -0
- package/package.json +9 -5
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export { default as RemoteViewControllerFactory } from './RemoteViewControllerFactory';
|
|
1
|
+
export { default as RemoteViewControllerFactory } from './viewControllers/RemoteViewControllerFactory';
|
|
2
|
+
export { default as CardRegistrar } from './viewControllers/CardRegistrar';
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export { default as RemoteViewControllerFactory } from './RemoteViewControllerFactory.js';
|
|
1
|
+
export { default as RemoteViewControllerFactory } from './viewControllers/RemoteViewControllerFactory.js';
|
|
2
|
+
export { default as CardRegistrar } from './viewControllers/CardRegistrar.js';
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { AbstractViewController, ViewControllerFactory } from '@sprucelabs/heartwood-view-controllers';
|
|
2
|
+
import { MercuryClient } from '@sprucelabs/mercury-client';
|
|
3
|
+
import { KeyOf, SkillEventContract, SpruceSchemas } from '@sprucelabs/mercury-types';
|
|
4
|
+
import { Schema, SchemaValues } from '@sprucelabs/schema';
|
|
5
|
+
declare type Card = SpruceSchemas.HeartwoodViewControllers.v2021_02_11.Card;
|
|
6
|
+
export declare type EventNames<Contract extends SkillEventContract> = KeyOf<Contract['eventSignatures']>;
|
|
7
|
+
declare type ResponsePayload<Contract extends SkillEventContract, Name extends EventNames<Contract>
|
|
8
|
+
/** @ts-ignore */
|
|
9
|
+
> = Contract['eventSignatures'][Name]['responsePayloadSchema'] extends Schema ? SchemaValues<Contract['eventSignatures'][Name]['responsePayloadSchema']> : never;
|
|
10
|
+
declare type EmitPayload<Contract extends SkillEventContract, Name extends EventNames<Contract>
|
|
11
|
+
/** @ts-ignore */
|
|
12
|
+
> = Contract['eventSignatures'][Name]['emitPayloadSchema'] extends Schema ? SchemaValues<Contract['eventSignatures'][Name]['emitPayloadSchema']> : never;
|
|
13
|
+
export interface CardRegistrarOptions<Contract extends SkillEventContract, Name extends EventNames<Contract>> {
|
|
14
|
+
client: MercuryClient;
|
|
15
|
+
eventName: Name;
|
|
16
|
+
vcFactory: ViewControllerFactory;
|
|
17
|
+
vcIdsTransformer: (payload: ResponsePayload<Contract, Name>) => string[];
|
|
18
|
+
}
|
|
19
|
+
export declare type EachCardHandler = (vcs: AbstractViewController<any>[]) => Promise<void> | void;
|
|
20
|
+
export declare type CardFetchOptions<Contract extends SkillEventContract, Name extends EventNames<Contract>> = {
|
|
21
|
+
each: EachCardHandler;
|
|
22
|
+
} & EmitPayload<Contract, Name>;
|
|
23
|
+
export default class CardRegistrar<
|
|
24
|
+
/** @ts-ignore */
|
|
25
|
+
Contract extends SkillEventContract = SkillEventContract, Name extends EventNames<Contract> = EventNames<Contract>> {
|
|
26
|
+
private client;
|
|
27
|
+
private eventName;
|
|
28
|
+
private vcIdsTransformer;
|
|
29
|
+
private remoteVcFactory;
|
|
30
|
+
constructor(options: CardRegistrarOptions<Contract, Name>);
|
|
31
|
+
fetch(options?: CardFetchOptions<Contract, Name>): Promise<AbstractViewController<Card>[]>;
|
|
32
|
+
}
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { assertOptions } from '@sprucelabs/schema';
|
|
11
|
+
import RemoteViewControllerFactory from './RemoteViewControllerFactory.js';
|
|
12
|
+
export default class CardRegistrar {
|
|
13
|
+
constructor(options) {
|
|
14
|
+
assertOptions(options, [
|
|
15
|
+
'client',
|
|
16
|
+
'eventName',
|
|
17
|
+
'vcFactory',
|
|
18
|
+
'vcIdsTransformer',
|
|
19
|
+
]);
|
|
20
|
+
this.client = options.client;
|
|
21
|
+
this.eventName = options.eventName;
|
|
22
|
+
this.vcIdsTransformer = options.vcIdsTransformer;
|
|
23
|
+
this.remoteVcFactory = RemoteViewControllerFactory.Factory({
|
|
24
|
+
//@ts-ignore
|
|
25
|
+
connectToApi: () => options.client,
|
|
26
|
+
vcFactory: options.vcFactory,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
fetch(options) {
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
try {
|
|
32
|
+
//@ts-ignore
|
|
33
|
+
const { each, target, payload } = options !== null && options !== void 0 ? options : {};
|
|
34
|
+
const targetAndPayload = target || payload ? { target, payload } : undefined;
|
|
35
|
+
const cards = [];
|
|
36
|
+
yield this.client.emitAndFlattenResponses(this.eventName, targetAndPayload, ({ payload }) => __awaiter(this, void 0, void 0, function* () {
|
|
37
|
+
const vcIds = this.vcIdsTransformer(payload);
|
|
38
|
+
const responseCards = [];
|
|
39
|
+
for (const id of vcIds) {
|
|
40
|
+
try {
|
|
41
|
+
const vc = yield this.remoteVcFactory.RemoteController(id, {});
|
|
42
|
+
responseCards.push(vc);
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
console.error(err);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (responseCards.length > 0) {
|
|
49
|
+
each === null || each === void 0 ? void 0 : each(responseCards);
|
|
50
|
+
}
|
|
51
|
+
cards.push(...responseCards);
|
|
52
|
+
}));
|
|
53
|
+
return cards;
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
console.error(err);
|
|
57
|
+
return [this.remoteVcFactory.Controller('heartwood.error-card', {})];
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ViewControllerFactory } from '@sprucelabs/heartwood-view-controllers';
|
|
2
2
|
import { MercuryClient } from '@sprucelabs/mercury-client';
|
|
3
|
-
import { SkillTheme } from '
|
|
3
|
+
import { SkillTheme } from '../ThemeManager';
|
|
4
4
|
declare type ConnectToApi = () => Promise<MercuryClient>;
|
|
5
5
|
interface FactoryOptions {
|
|
6
6
|
connectToApi: ConnectToApi;
|
package/build/esm/{RemoteViewControllerFactory.js → viewControllers/RemoteViewControllerFactory.js}
RENAMED
|
File without changes
|
package/build/index-module.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export { default as RemoteViewControllerFactory } from './RemoteViewControllerFactory';
|
|
1
|
+
export { default as RemoteViewControllerFactory } from './viewControllers/RemoteViewControllerFactory';
|
|
2
|
+
export { default as CardRegistrar } from './viewControllers/CardRegistrar';
|
package/build/index-module.js
CHANGED
|
@@ -3,7 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.RemoteViewControllerFactory = void 0;
|
|
7
|
-
var RemoteViewControllerFactory_1 = require("./RemoteViewControllerFactory");
|
|
6
|
+
exports.CardRegistrar = exports.RemoteViewControllerFactory = void 0;
|
|
7
|
+
var RemoteViewControllerFactory_1 = require("./viewControllers/RemoteViewControllerFactory");
|
|
8
8
|
Object.defineProperty(exports, "RemoteViewControllerFactory", { enumerable: true, get: function () { return __importDefault(RemoteViewControllerFactory_1).default; } });
|
|
9
|
+
var CardRegistrar_1 = require("./viewControllers/CardRegistrar");
|
|
10
|
+
Object.defineProperty(exports, "CardRegistrar", { enumerable: true, get: function () { return __importDefault(CardRegistrar_1).default; } });
|
|
9
11
|
//# sourceMappingURL=index-module.js.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { AbstractViewController, ViewControllerFactory } from '@sprucelabs/heartwood-view-controllers';
|
|
2
|
+
import { MercuryClient } from '@sprucelabs/mercury-client';
|
|
3
|
+
import { KeyOf, SkillEventContract, SpruceSchemas } from '@sprucelabs/mercury-types';
|
|
4
|
+
import { Schema, SchemaValues } from '@sprucelabs/schema';
|
|
5
|
+
declare type Card = SpruceSchemas.HeartwoodViewControllers.v2021_02_11.Card;
|
|
6
|
+
export declare type EventNames<Contract extends SkillEventContract> = KeyOf<Contract['eventSignatures']>;
|
|
7
|
+
declare type ResponsePayload<Contract extends SkillEventContract, Name extends EventNames<Contract>
|
|
8
|
+
/** @ts-ignore */
|
|
9
|
+
> = Contract['eventSignatures'][Name]['responsePayloadSchema'] extends Schema ? SchemaValues<Contract['eventSignatures'][Name]['responsePayloadSchema']> : never;
|
|
10
|
+
declare type EmitPayload<Contract extends SkillEventContract, Name extends EventNames<Contract>
|
|
11
|
+
/** @ts-ignore */
|
|
12
|
+
> = Contract['eventSignatures'][Name]['emitPayloadSchema'] extends Schema ? SchemaValues<Contract['eventSignatures'][Name]['emitPayloadSchema']> : never;
|
|
13
|
+
export interface CardRegistrarOptions<Contract extends SkillEventContract, Name extends EventNames<Contract>> {
|
|
14
|
+
client: MercuryClient;
|
|
15
|
+
eventName: Name;
|
|
16
|
+
vcFactory: ViewControllerFactory;
|
|
17
|
+
vcIdsTransformer: (payload: ResponsePayload<Contract, Name>) => string[];
|
|
18
|
+
}
|
|
19
|
+
export declare type EachCardHandler = (vcs: AbstractViewController<any>[]) => Promise<void> | void;
|
|
20
|
+
export declare type CardFetchOptions<Contract extends SkillEventContract, Name extends EventNames<Contract>> = {
|
|
21
|
+
each: EachCardHandler;
|
|
22
|
+
} & EmitPayload<Contract, Name>;
|
|
23
|
+
export default class CardRegistrar<
|
|
24
|
+
/** @ts-ignore */
|
|
25
|
+
Contract extends SkillEventContract = SkillEventContract, Name extends EventNames<Contract> = EventNames<Contract>> {
|
|
26
|
+
private client;
|
|
27
|
+
private eventName;
|
|
28
|
+
private vcIdsTransformer;
|
|
29
|
+
private remoteVcFactory;
|
|
30
|
+
constructor(options: CardRegistrarOptions<Contract, Name>);
|
|
31
|
+
fetch(options?: CardFetchOptions<Contract, Name>): Promise<AbstractViewController<Card>[]>;
|
|
32
|
+
}
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const schema_1 = require("@sprucelabs/schema");
|
|
7
|
+
const RemoteViewControllerFactory_1 = __importDefault(require("./RemoteViewControllerFactory"));
|
|
8
|
+
class CardRegistrar {
|
|
9
|
+
constructor(options) {
|
|
10
|
+
(0, schema_1.assertOptions)(options, [
|
|
11
|
+
'client',
|
|
12
|
+
'eventName',
|
|
13
|
+
'vcFactory',
|
|
14
|
+
'vcIdsTransformer',
|
|
15
|
+
]);
|
|
16
|
+
this.client = options.client;
|
|
17
|
+
this.eventName = options.eventName;
|
|
18
|
+
this.vcIdsTransformer = options.vcIdsTransformer;
|
|
19
|
+
this.remoteVcFactory = RemoteViewControllerFactory_1.default.Factory({
|
|
20
|
+
//@ts-ignore
|
|
21
|
+
connectToApi: () => options.client,
|
|
22
|
+
vcFactory: options.vcFactory,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
async fetch(options) {
|
|
26
|
+
try {
|
|
27
|
+
//@ts-ignore
|
|
28
|
+
const { each, target, payload } = options !== null && options !== void 0 ? options : {};
|
|
29
|
+
const targetAndPayload = target || payload ? { target, payload } : undefined;
|
|
30
|
+
const cards = [];
|
|
31
|
+
await this.client.emitAndFlattenResponses(this.eventName, targetAndPayload, async ({ payload }) => {
|
|
32
|
+
const vcIds = this.vcIdsTransformer(payload);
|
|
33
|
+
const responseCards = [];
|
|
34
|
+
for (const id of vcIds) {
|
|
35
|
+
try {
|
|
36
|
+
const vc = await this.remoteVcFactory.RemoteController(id, {});
|
|
37
|
+
responseCards.push(vc);
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
console.error(err);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (responseCards.length > 0) {
|
|
44
|
+
each === null || each === void 0 ? void 0 : each(responseCards);
|
|
45
|
+
}
|
|
46
|
+
cards.push(...responseCards);
|
|
47
|
+
});
|
|
48
|
+
return cards;
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
console.error(err);
|
|
52
|
+
return [this.remoteVcFactory.Controller('heartwood.error-card', {})];
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.default = CardRegistrar;
|
|
57
|
+
//# sourceMappingURL=CardRegistrar.js.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ViewControllerFactory } from '@sprucelabs/heartwood-view-controllers';
|
|
2
|
+
import { MercuryClient } from '@sprucelabs/mercury-client';
|
|
3
|
+
import { SkillTheme } from '../ThemeManager';
|
|
4
|
+
declare type ConnectToApi = () => Promise<MercuryClient>;
|
|
5
|
+
interface FactoryOptions {
|
|
6
|
+
connectToApi: ConnectToApi;
|
|
7
|
+
vcFactory: ViewControllerFactory;
|
|
8
|
+
}
|
|
9
|
+
declare type Factory = Pick<ViewControllerFactory, 'hasController'>;
|
|
10
|
+
export default class RemoteViewControllerFactory implements Factory {
|
|
11
|
+
private connectToApi;
|
|
12
|
+
private vcFactory;
|
|
13
|
+
private themesByNamespace;
|
|
14
|
+
static Factory(options: FactoryOptions): RemoteViewControllerFactory;
|
|
15
|
+
private constructor();
|
|
16
|
+
hasController(name: string): boolean;
|
|
17
|
+
getTheme(namespace?: string): SkillTheme;
|
|
18
|
+
Controller(name: string, options: Record<string, any>): any;
|
|
19
|
+
private getNamespace;
|
|
20
|
+
getController(name: string): any;
|
|
21
|
+
fetchRemoteController(name: string): Promise<any>;
|
|
22
|
+
RemoteController(name: string, options: Record<string, any>): Promise<any>;
|
|
23
|
+
private optionallLoadController;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
package/build/{RemoteViewControllerFactory.js → viewControllers/RemoteViewControllerFactory.js}
RENAMED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sprucelabs/spruce-heartwood-utils",
|
|
3
3
|
"description": "Heartwood Utilities",
|
|
4
|
-
"version": "6.0
|
|
4
|
+
"version": "6.4.0",
|
|
5
5
|
"skill": {
|
|
6
6
|
"namespace": "heartwood"
|
|
7
7
|
},
|
|
@@ -18,10 +18,14 @@
|
|
|
18
18
|
"build/index-module.d.ts",
|
|
19
19
|
"build/esm/index-module.js",
|
|
20
20
|
"build/esm/index-module.d.ts",
|
|
21
|
-
"build/RemoteViewControllerFactory.js",
|
|
22
|
-
"build/RemoteViewControllerFactory.d.ts",
|
|
23
|
-
"build/esm/RemoteViewControllerFactory.js",
|
|
24
|
-
"build/esm/
|
|
21
|
+
"build/viewControllers/RemoteViewControllerFactory.js",
|
|
22
|
+
"build/viewControllers/RemoteViewControllerFactory.d.ts",
|
|
23
|
+
"build/esm/viewControllers/RemoteViewControllerFactory.js",
|
|
24
|
+
"build/esm/viewControllers/RemoteViewControllerFactory.d.ts",
|
|
25
|
+
"build/viewControllers/CardRegistrar.js",
|
|
26
|
+
"build/viewControllers/CardRegistrar.d.ts",
|
|
27
|
+
"build/esm/viewControllers/CardRegistrar.js",
|
|
28
|
+
"build/esm/viewControllers/CardRegistrar.d.ts",
|
|
25
29
|
"build/ThemeManager.js",
|
|
26
30
|
"build/ThemeManager.d.ts",
|
|
27
31
|
"build/esm/ThemeManager.js",
|