Socket
Socket
Sign inDemoInstall

ame-super-app-web

Package Overview
Dependencies
Maintainers
1
Versions
68
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ame-super-app-web - npm Package Compare versions

Comparing version 2.0.0-alpha.0 to 2.0.0

dist/tsc/src/model/MiniAppDataOnShareApi.d.ts

63

dist/tsc/src/config/Config.d.ts

@@ -6,6 +6,69 @@ import { SuperAppEnvironment } from "../model/SuperAppEnvironment";

private static _profile;
static readonly fileMapper: {
dev: {
env: string;
miniAppManager: {
endpoint: string;
};
superAppBff: {
endpoint: string;
};
share: {
endpoint: string;
};
blindGuardian: {
endpoint: string;
body: {
grant_type: string;
client_id: string;
client_secret: string;
};
};
};
hml: {
env: string;
miniAppManager: {
endpoint: string;
};
superAppBff: {
endpoint: string;
};
share: {
endpoint: string;
};
blindGuardian: {
endpoint: string;
body: {
grant_type: string;
client_id: string;
client_secret: string;
};
};
};
prod: {
env: string;
miniAppManager: {
endpoint: string;
};
superAppBff: {
endpoint: string;
};
share: {
endpoint: string;
};
blindGuardian: {
endpoint: string;
body: {
grant_type: string;
client_id: string;
client_secret: string;
};
};
};
};
static init(env: SuperAppEnvironment): ConfigModel;
private static generateProfile;
static getProfileByEnv(env: SuperAppEnvironment): ConfigModel;
static get profile(): ConfigModel;
static set profile(profile: any);
}

27

dist/tsc/src/config/Config.js

@@ -5,11 +5,6 @@ "use strict";

const SuperAppEnvironment_1 = require("../model/SuperAppEnvironment");
const dev_1 = (0, tslib_1.__importDefault)(require("./env/dev"));
const hml_1 = (0, tslib_1.__importDefault)(require("./env/hml"));
const prod_1 = (0, tslib_1.__importDefault)(require("./env/prod"));
const default_1 = (0, tslib_1.__importDefault)(require("./env/default"));
const fileMapper = {
[SuperAppEnvironment_1.SuperAppEnvironment.DEV]: dev_1.default,
[SuperAppEnvironment_1.SuperAppEnvironment.HML]: hml_1.default,
[SuperAppEnvironment_1.SuperAppEnvironment.PROD]: prod_1.default,
};
const dev_1 = tslib_1.__importDefault(require("./env/dev"));
const hml_1 = tslib_1.__importDefault(require("./env/hml"));
const prod_1 = tslib_1.__importDefault(require("./env/prod"));
const default_1 = tslib_1.__importDefault(require("./env/default"));
class Config {

@@ -21,8 +16,11 @@ static init(env) {

this.currentEnv = env;
this.profile = this.generateProfile();
return this.profile;
Config.profile = this.generateProfile();
return Config.profile;
}
static generateProfile() {
return Object.assign(Object.assign({}, default_1.default), fileMapper[this.currentEnv]);
return Object.assign(Object.assign({}, default_1.default), Config.fileMapper[this.currentEnv]);
}
static getProfileByEnv(env) {
return Object.assign(Object.assign({}, default_1.default), Config.fileMapper[env]);
}
static get profile() {

@@ -39,2 +37,7 @@ if (!this._profile) {

exports.default = Config;
Config.fileMapper = {
[SuperAppEnvironment_1.SuperAppEnvironment.DEV]: dev_1.default,
[SuperAppEnvironment_1.SuperAppEnvironment.HML]: hml_1.default,
[SuperAppEnvironment_1.SuperAppEnvironment.PROD]: prod_1.default,
};
//# sourceMappingURL=Config.js.map

@@ -10,2 +10,13 @@ export interface ConfigModel {

};
share: {
endpoint: string;
};
blindGuardian: {
endpoint: string;
body: {
grant_type: string;
client_id: string;
client_secret: string;
};
};
}

@@ -9,3 +9,14 @@ declare const _default: {

};
share: {
endpoint: string;
};
blindGuardian: {
endpoint: string;
body: {
grant_type: string;
client_id: string;
client_secret: string;
};
};
};
export default _default;

@@ -12,3 +12,14 @@ "use strict";

},
share: {
endpoint: basePath + "/share-api/share",
},
blindGuardian: {
endpoint: basePath + "/blind-guardian-api/v1",
body: {
grant_type: "client_credentials",
client_id: "",
client_secret: "",
},
},
};
//# sourceMappingURL=dev.js.map

@@ -9,3 +9,14 @@ declare const _default: {

};
share: {
endpoint: string;
};
blindGuardian: {
endpoint: string;
body: {
grant_type: string;
client_id: string;
client_secret: string;
};
};
};
export default _default;

@@ -12,3 +12,14 @@ "use strict";

},
share: {
endpoint: basePath + "/share-api/share",
},
blindGuardian: {
endpoint: basePath + "/blind-guardian-api/v1",
body: {
grant_type: "client_credentials",
client_id: "",
client_secret: "",
},
},
};
//# sourceMappingURL=hml.js.map

@@ -9,3 +9,14 @@ declare const _default: {

};
share: {
endpoint: string;
};
blindGuardian: {
endpoint: string;
body: {
grant_type: string;
client_id: string;
client_secret: string;
};
};
};
export default _default;

@@ -12,3 +12,14 @@ "use strict";

},
share: {
endpoint: basePath + "/share-api/share",
},
blindGuardian: {
endpoint: basePath + "/blind-guardian-api/v1",
body: {
grant_type: "client_credentials",
client_id: "",
client_secret: "",
},
},
};
//# sourceMappingURL=prod.js.map
import { SuperAppEnvironment } from "../model/SuperAppEnvironment";
export default class EnvironmentManager {
private static envToSuperAppEnvironment;
private static reactEnvToSuperAppEnvironment;
private static ameEnvToSuperAppEnvironment;
static fromReactENV(env: string): SuperAppEnvironment;
static fromAmeENV(env?: string): SuperAppEnvironment;
}

@@ -6,3 +6,3 @@ "use strict";

static fromReactENV(env) {
const envResolved = this.envToSuperAppEnvironment[env];
const envResolved = this.reactEnvToSuperAppEnvironment[env];
if (!envResolved) {

@@ -13,5 +13,15 @@ throw new Error("environment.not.recognized");

}
static fromAmeENV(env) {
if (!env) {
return SuperAppEnvironment_1.SuperAppEnvironment.DEV;
}
const envResolved = this.ameEnvToSuperAppEnvironment[env];
if (!envResolved) {
throw new Error("environment.not.recognized");
}
return envResolved;
}
}
exports.default = EnvironmentManager;
EnvironmentManager.envToSuperAppEnvironment = {
EnvironmentManager.reactEnvToSuperAppEnvironment = {
["development"]: SuperAppEnvironment_1.SuperAppEnvironment.DEV,

@@ -21,2 +31,9 @@ ["production"]: SuperAppEnvironment_1.SuperAppEnvironment.PROD,

};
EnvironmentManager.ameEnvToSuperAppEnvironment = {
["dev"]: SuperAppEnvironment_1.SuperAppEnvironment.DEV,
["test"]: SuperAppEnvironment_1.SuperAppEnvironment.DEV,
["hml"]: SuperAppEnvironment_1.SuperAppEnvironment.HML,
["prod"]: SuperAppEnvironment_1.SuperAppEnvironment.PROD,
["prd"]: SuperAppEnvironment_1.SuperAppEnvironment.PROD,
};
//# sourceMappingURL=EnvironmentManager.js.map

@@ -5,5 +5,7 @@ import EnvironmentManager from "./helper/EnvironmentManager";

import OpenMiniAppWorkspaceInputI from "./model/input/OpenMiniAppWorkspaceInput";
import SuperApp from "./SuperApp";
declare const superApp: SuperApp;
import { SuperAppTargetEnum as SuperAppTargetEnumI } from "./model/SuperAppTargetEnum";
import SuperAppApi from "./SuperAppApi";
declare const superApp: SuperAppApi;
export declare type InitInput = InitInputI;
export { SuperAppTargetEnumI as SuperAppTargetEnum };
export declare type OpenMiniAppInput = OpenMiniAppInputI;

@@ -10,0 +12,0 @@ export declare type OpenMiniAppWorkspaceInput = OpenMiniAppWorkspaceInputI;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.EnvironmentManager = void 0;
exports.EnvironmentManager = exports.SuperAppTargetEnum = void 0;
const tslib_1 = require("tslib");
const EnvironmentManager_1 = (0, tslib_1.__importDefault)(require("./helper/EnvironmentManager"));
const EnvironmentManager_1 = tslib_1.__importDefault(require("./helper/EnvironmentManager"));
exports.EnvironmentManager = EnvironmentManager_1.default;
const SuperApp_1 = (0, tslib_1.__importDefault)(require("./SuperApp"));
const SuperAppTargetEnum_1 = require("./model/SuperAppTargetEnum");
Object.defineProperty(exports, "SuperAppTargetEnum", { enumerable: true, get: function () { return SuperAppTargetEnum_1.SuperAppTargetEnum; } });
const SuperAppApi_1 = tslib_1.__importDefault(require("./SuperAppApi"));
// setup web
const superApp = new SuperApp_1.default();
const superApp = new SuperAppApi_1.default();
window.Ame = superApp;
window.ameSuperApp = superApp;
// export enums
(0, tslib_1.__exportStar)(require("./model/SuperAppEnvironment"), exports);
tslib_1.__exportStar(require("./model/SuperAppEnvironment"), exports);
// export entrypoint
exports.default = superApp;
//# sourceMappingURL=index.js.map
import SharedMethods from "../SharedMethods";
import { SuperAppEnvironment } from "../SuperAppEnvironment";
import { SuperAppTargetEnum } from "../SuperAppTargetEnum";
export default interface InitInput {
url: string;
environment: SuperAppEnvironment;
target: SuperAppTargetEnum;
methods?: SharedMethods;

@@ -7,0 +9,0 @@ urlPatterns: {

export default interface OpenMiniAppFromClient {
slug: string;
initializationParams: {
initializationParams?: {
[s: string]: any;
};
contextParams: {
contextParams?: {
[s: string]: any;
};
}
export default interface OpenMiniAppInput {
container: HTMLElement;
slug: string;
initializationParams?: {
[key: string | number]: any;
};
}

@@ -0,1 +1,11 @@

export interface OpenMiniAppWorkspaceParsedContext {
withUrl?: {
url: string;
slug: string;
};
withShare?: {
shareId: string;
shareEnvironment: string;
};
}
export default interface OpenMiniAppWorkspaceInput {

@@ -6,3 +16,2 @@ container: HTMLElement;

context?: string;
shareId?: string;
}
import MiniappPermissionEnum from "./MiniappPermissionEnum";
import { MiniAppPermission } from "./MiniAppPermission";
import { SuperAppTargetEnum } from "./SuperAppTargetEnum";
export default interface MiniAppData {

@@ -18,4 +19,6 @@ id: string;

extras: any;
target: SuperAppTargetEnum;
permissions?: Array<MiniappPermissionEnum>;
miniAppPermissions?: Array<MiniAppPermission>;
initializationInfos: InitializationInfos;
/**

@@ -22,0 +25,0 @@ * storage key do miniapp, usado para criptografia de dados de um miniapp usando Ame.storage

@@ -22,2 +22,6 @@ "use strict";

metadata: {},
initializationInfos: {
shareContext: { valuesPromise: Promise.resolve(), id: "" },
navigationParams: {},
},
organization: {

@@ -30,2 +34,5 @@ owner: {

customerIdentityValidationOcrEnabled: false,
// Ignora proxima linha porque nao tem "target padrão" e o ts não gosta disso
// @ts-ignore next-line
target: "",
};

@@ -32,0 +39,0 @@ }

import MiniAppData from "./MiniAppData";
import SharedMethods from "./SharedMethods";
import { SuperAppEnvironment } from "./SuperAppEnvironment";
import { SuperAppTargetEnum } from "./SuperAppTargetEnum";
export default class SuperAppContext {

@@ -8,2 +9,3 @@ url?: string;

methods?: SharedMethods;
target?: SuperAppTargetEnum;
urlPatterns?: {

@@ -10,0 +12,0 @@ openMiniAppBySlug?: string;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const UrlPatternUtils_1 = tslib_1.__importDefault(require("../utils/UrlPatternUtils"));
const SuperAppTargetEnum_1 = require("./SuperAppTargetEnum");
class SuperAppContext {
// validatePathPattern(path: string, urlPatterns: Array<string>, patternName: string) {
// if (!path) {
// throw new Error(`init.error.no.pattern.${patternName}`)
// }
// let returnValue = true
// urlPatterns.forEach((pattern) => {
// if (!path.includes(pattern)) {
// throw new Error(`init.error.pattern.${patternName}.no.:${pattern}`)
// }
// })
// }
validateInit() {
var _a, _b, _c;
var _a;
if (!this.url) {

@@ -23,8 +15,9 @@ throw new Error("init.error.invalid.url");

}
if (!((_a = this.urlPatterns) === null || _a === void 0 ? void 0 : _a.openMiniAppBySlug)) {
throw new Error("init.error.no.pattern.openMiniAppBySlug");
if (!this.target) {
throw new Error("init.error.no.target");
}
if (!((_c = (_b = this.urlPatterns) === null || _b === void 0 ? void 0 : _b.openMiniAppBySlug) === null || _c === void 0 ? void 0 : _c.includes(":slug"))) {
throw new Error("init.error.pattern.openMiniAppBySlug.no.:slug");
if (!Object.values(SuperAppTargetEnum_1.SuperAppTargetEnum).includes(this.target)) {
throw new Error("init.error.invalid.target");
}
UrlPatternUtils_1.default.validateOpenMiniAppBySlugPattern((_a = this.urlPatterns) === null || _a === void 0 ? void 0 : _a.openMiniAppBySlug);
}

@@ -31,0 +24,0 @@ }

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const axios_1 = (0, tslib_1.__importDefault)(require("axios"));
const axios_1 = tslib_1.__importDefault(require("axios"));
class HttpService {
static post(url, data, config) {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return this.callAxios("post", [url, data, config]);

@@ -12,3 +12,3 @@ });

static get(url, config) {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return this.callAxios("get", [url, config]);

@@ -18,3 +18,3 @@ });

static delete(url, config) {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return this.callAxios("delete", [url, config]);

@@ -24,3 +24,3 @@ });

static put(url, data, config) {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return this.callAxios("put", [url, data, config]);

@@ -30,3 +30,3 @@ });

static patch(url, data, config) {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return this.callAxios("patch", [url, data, config]);

@@ -36,3 +36,3 @@ });

static head(url, config) {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return this.callAxios("head", [url, config]);

@@ -42,3 +42,3 @@ });

static options(url, config) {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return this.callAxios("options", [url, config]);

@@ -48,3 +48,3 @@ });

static callAxios(methodName, args) {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (args[0].includes("http:")) {

@@ -51,0 +51,0 @@ throw "Protocolo HTTP não permitido. Use o protocolo HTTPS.";

import MiniAppData from "../model/MiniAppData";
import MiniAppDataOnShareApi from "../model/MiniAppDataOnShareApi";
import { SuperAppEnvironment } from "../model/SuperAppEnvironment";
import { LoginAware } from "./BlindGuardianService";
interface FindShareDataInput extends LoginAware {
shareId: string;
env: SuperAppEnvironment;
}
export default class MiniAppManagerService {
findMiniApp(slug: string): Promise<MiniAppData>;
findShareData(options: FindShareDataInput): Promise<MiniAppDataOnShareApi>;
}
export {};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const Config_1 = (0, tslib_1.__importDefault)(require("../config/Config"));
const HttpService_1 = (0, tslib_1.__importDefault)(require("./HttpService"));
const Config_1 = tslib_1.__importDefault(require("../config/Config"));
const HttpService_1 = tslib_1.__importDefault(require("./HttpService"));
class MiniAppManagerService {
findMiniApp(slug) {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
try {

@@ -27,4 +27,22 @@ const url = Config_1.default.profile.miniAppManager.endpoint + "/o/mini-apps/" + slug;

}
// API de share está aberta
//@BlindGuardianProtectedRetriableMethod()
findShareData(options) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
try {
const url = Config_1.default.getProfileByEnv(options.env).share.endpoint + "/" + options.shareId;
console.debug("url", url);
// const shareRes = await HttpService.get(url, { headers: { Authorization: "Bearer " + options.bearerToken } });
const shareRes = yield HttpService_1.default.get(url);
return shareRes.data;
}
catch (e) {
console.debug("erro ao buscar dados do mini-app", e);
//throw BlindGuardianService.handleErrors(new Error("findMiniApp.error"), e?.response?.status);
throw new Error("findMiniApp.error");
}
});
}
}
exports.default = MiniAppManagerService;
//# sourceMappingURL=MiniAppManagerService.js.map

@@ -5,3 +5,3 @@ "use strict";

const uuid_1 = require("uuid");
const Polyfills_1 = (0, tslib_1.__importDefault)(require("../helper/Polyfills"));
const Polyfills_1 = tslib_1.__importDefault(require("../helper/Polyfills"));
//inicialização do pbkdf2 em formato de require para ser possível fazer o polyfills do browser

@@ -13,3 +13,3 @@ Polyfills_1.default.pbkdf2();

generateKey(miniAppSlug) {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
console.debug("generateKey.start", miniAppSlug);

@@ -16,0 +16,0 @@ const storageAccessKey = STORAGE_KEY_PREFIX + miniAppSlug;

import MiniAppConfigs from "../model/MiniAppConfigs";
import SuperApp from "../SuperApp";
import OpenMiniAppFromClient from "../model/input/OpenMiniAppFromClient";
import InitializationInfos from "../model/output/InitializationInfos";
export default class SuperAppService {

@@ -12,3 +11,3 @@ superApp: SuperApp;

getConfigs(): Promise<MiniAppConfigs>;
getInitializationInfos(): Promise<InitializationInfos>;
getInitializationInfos(): Promise<any>;
}

@@ -5,3 +5,2 @@ "use strict";

const SuperAppEnvironment_1 = require("../model/SuperAppEnvironment");
const qs_1 = (0, tslib_1.__importDefault)(require("qs"));
class SuperAppService {

@@ -15,3 +14,3 @@ constructor(ameSuperApp) {

openMiniApp(input) {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (!input) {

@@ -26,3 +25,3 @@ throw new Error("openMiniApp.argument.required");

}
this.superApp.pushMiniApp(input);
this.superApp.pushMiniApp(input, true);
});

@@ -32,3 +31,3 @@ }

var _a, _b;
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const ctx = this.ctx();

@@ -47,3 +46,3 @@ const slug = (_a = ctx.miniAppData) === null || _a === void 0 ? void 0 : _a.slug;

getConfigs() {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const superApp = this.superApp;

@@ -68,20 +67,4 @@ const context = superApp.context;

getInitializationInfos() {
var _a, _b, _c;
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
const returnArray = [];
const queryString = (_a = window.location) === null || _a === void 0 ? void 0 : _a.search;
const navigationObject = { type: "NAVIGATION", data: {} };
const initInfos = localStorage.getItem(((_b = this.superApp.context.miniAppData) === null || _b === void 0 ? void 0 : _b.slug) + "_initialization_params");
if (initInfos) {
navigationObject.data = JSON.parse(initInfos);
}
if (queryString) {
navigationObject.data = Object.assign({}, qs_1.default.parse((_c = window.location) === null || _c === void 0 ? void 0 : _c.search.substring(1)));
}
if (Object.keys(navigationObject.data).length > 0) {
returnArray.push(navigationObject);
}
// TODO: type "SHARE"
// @ts-ignore
return returnArray;
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return this.superApp.getInitializationInfos();
});

@@ -88,0 +71,0 @@ }

@@ -8,8 +8,9 @@ import InitInput from "./model/input/InitInput";

import MiniAppManagerService from "./service/MiniAppManagerService";
import MiniAppData from "./model/MiniAppData";
import OpenMiniAppFromClient from "./model/input/OpenMiniAppFromClient";
import MiniAppStackService from "./service/MiniAppStackService";
import SuperAppApi from "./SuperAppApi";
declare global {
interface Window {
Ame: SuperApp;
ameSuperApp: SuperApp;
Ame: SuperAppApi;
ameSuperApp: SuperAppApi;
ameHistory: any;

@@ -22,2 +23,3 @@ }

miniAppManagerService: MiniAppManagerService;
miniAppStackService: MiniAppStackService;
context: SuperAppContext;

@@ -27,7 +29,11 @@ constructor();

openMiniApp: (input: OpenMiniAppInput) => Promise<void>;
pushMiniApp: (input: OpenMiniAppFromClient) => void;
private getCurrentMiniAppContainer;
openMiniAppWorkspace: (input: OpenMiniAppWorkspaceInput) => Promise<void>;
generateMiniAppDataToLegacyOpenWorkspaceMethod: (input: OpenMiniAppWorkspaceInput) => Promise<MiniAppData>;
private initMiniApp;
private parseOpenMiniAppWorkspaceInputContext;
pushMiniApp: (input: OpenMiniAppFromClient, shouldPushState?: boolean | undefined) => Promise<void>;
getInitializationInfos(): {
type: string;
data: {
[s: string]: any;
};
}[];
postMessageToWindow: (window: any, message: any) => void;

@@ -42,2 +48,10 @@ rejectPromiseOnWindow: (window: any, message: any) => void;

};
logout: () => Promise<void>;
private internalOpenMiniApp;
private openMiniAppInDefaultContainer;
private getCurrentMiniAppContainer;
private generateMiniAppDataToOpenWorkspace;
private checkMiniAppDataTargetValidity;
private initIFrame;
private initMiniApp;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const SuperAppContext_1 = (0, tslib_1.__importDefault)(require("./model/SuperAppContext"));
const SuperAppService_1 = (0, tslib_1.__importDefault)(require("./service/SuperAppService"));
const version_1 = (0, tslib_1.__importDefault)(require("./version"));
const StorageKeyService_1 = (0, tslib_1.__importDefault)(require("./service/StorageKeyService"));
const Config_1 = (0, tslib_1.__importDefault)(require("./config/Config"));
const MiniAppManagerService_1 = (0, tslib_1.__importDefault)(require("./service/MiniAppManagerService"));
const SuperAppContext_1 = tslib_1.__importDefault(require("./model/SuperAppContext"));
const SuperAppService_1 = tslib_1.__importDefault(require("./service/SuperAppService"));
const version_1 = tslib_1.__importDefault(require("./version"));
const StorageKeyService_1 = tslib_1.__importDefault(require("./service/StorageKeyService"));
const Config_1 = tslib_1.__importDefault(require("./config/Config"));
const MiniAppManagerService_1 = tslib_1.__importDefault(require("./service/MiniAppManagerService"));
const SuperAppEnvironment_1 = require("./model/SuperAppEnvironment");
const universal_base64url_1 = require("universal-base64url");
const UrlPatternUtils_1 = tslib_1.__importDefault(require("./utils/UrlPatternUtils"));
const MiniAppStackService_1 = tslib_1.__importDefault(require("./service/MiniAppStackService"));
const EnvironmentManager_1 = tslib_1.__importDefault(require("./helper/EnvironmentManager"));
const FRAME_ID = "ame-platform-frame";

@@ -16,2 +19,3 @@ class SuperApp {

this.init = (config) => {
this.miniAppStackService.init();
console.debug("SuperApp.init()...", config);

@@ -26,2 +30,3 @@ if (!config) {

ctx.urlPatterns = config.urlPatterns;
ctx.target = config.target;
ctx.validateInit();

@@ -31,54 +36,24 @@ Config_1.default.init(config.environment);

};
this.openMiniApp = (input) => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
if (!input.container || !input.slug) {
throw new Error("slug.and.container.required");
this.openMiniApp = (input) => tslib_1.__awaiter(this, void 0, void 0, function* () {
this.initIFrame(input.container);
if (this.miniAppStackService.backCrossedIntoFrameworkThreshold()) {
const miniApp = this.miniAppStackService.getLastMiniApp(this.miniAppStackService.getLastMiniAppStackKey());
this.internalOpenMiniApp({ slug: miniApp.slug, container: input.container });
return;
}
const miniAppData = yield this.miniAppManagerService.findMiniApp(input.slug);
if (!miniAppData.url) {
throw new Error("openMiniApp.unpublished");
}
this.context.miniAppData = miniAppData;
this.context.miniAppData.storageKey = yield this.storageKeyService.generateKey(input.slug);
if (input.initializationParams) {
window.localStorage.setItem(input.slug + "_initialization_params", JSON.stringify(input.initializationParams));
}
else {
window.localStorage.removeItem(input.slug + "_initialization_params");
}
yield this.initMiniApp({ container: input.container, slug: input.slug, url: miniAppData.url });
const openMiniAppInput = {
slug: input.slug,
};
this.miniAppStackService.createStack();
yield this.pushMiniApp(openMiniAppInput, false);
});
this.pushMiniApp = (input) => {
var _a;
let path = (_a = this.context.urlPatterns) === null || _a === void 0 ? void 0 : _a.openMiniAppBySlug;
if (!path || typeof path !== "string") {
throw new Error("pattern.slug.navigation.failed");
}
else {
path = path.replace(":slug", input.slug);
}
window.history.pushState({}, "", path);
const container = this.getCurrentMiniAppContainer();
this.openMiniApp(Object.assign(Object.assign({}, input), { container }));
};
this.getCurrentMiniAppContainer = () => {
const miniAppFrame = document.getElementById(FRAME_ID);
if (!miniAppFrame) {
throw new Error("miniapp.frame.not.found");
}
const container = miniAppFrame.parentElement;
if (!container) {
throw new Error("miniapp.frame.parent.not.found");
}
return container;
};
this.openMiniAppWorkspace = (input) => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
this.openMiniAppWorkspace = (input) => tslib_1.__awaiter(this, void 0, void 0, function* () {
if (!this.context.environment || this.context.environment === SuperAppEnvironment_1.SuperAppEnvironment.PROD) {
throw new Error("openMiniAppWorkspace.forbidden.in.production");
}
if (input.context) {
const ctx = JSON.parse((0, universal_base64url_1.decode)(input.context));
input.url = ctx.workspaceUrl;
if (!input.context && !input.url) {
throw new Error("openMiniAppWorkspace.context.or.url.required");
}
console.debug("openMiniAppByWorkspace", input.url);
this.context.miniAppData = yield this.generateMiniAppDataToLegacyOpenWorkspaceMethod(input);
const parsedContext = this.parseOpenMiniAppWorkspaceInputContext(input);
this.context.miniAppData = yield this.generateMiniAppDataToOpenWorkspace(parsedContext);
const miniAppData = this.context.miniAppData;

@@ -89,25 +64,52 @@ console.debug("miniAppData", miniAppData);

});
this.generateMiniAppDataToLegacyOpenWorkspaceMethod = (input) => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
let miniAppData;
if (input.slug) {
miniAppData = yield this.miniAppManagerService.findMiniApp(input.slug);
this.parseOpenMiniAppWorkspaceInputContext = (input) => {
if (input.context) {
const ctx = JSON.parse((0, universal_base64url_1.decode)(input.context));
if (ctx.workspaceUrl) {
input.url = ctx.workspaceUrl;
console.debug("openMiniAppByWorkspace", input.url);
return {
withUrl: {
url: ctx.workspaceUrl,
slug: input.slug,
},
};
}
if (ctx.shareId) {
return {
withShare: {
shareId: ctx.shareId,
shareEnvironment: ctx.shareEnvironment,
},
};
}
}
else if (input.shareId) {
//TODO implementar abertura por shareId. Será necessária para o novo conceito com permissions programáticas.
throw new Error("open.by.shareId.not.implemented");
//miniAppData = await this.miniAppManagerService.findMiniAppByShareId(input.shareId);
if (input.url) {
return {
withUrl: {
url: input.url,
slug: input.slug,
},
};
}
else {
throw new Error("shareId.or.slug.required");
throw new Error("parseOpenMiniAppWorkspaceInputContext.no.context.infos");
};
this.pushMiniApp = (input, shouldPushState) => tslib_1.__awaiter(this, void 0, void 0, function* () {
var _a;
let path = (_a = this.context.urlPatterns) === null || _a === void 0 ? void 0 : _a.openMiniAppBySlug;
try {
UrlPatternUtils_1.default.validateOpenMiniAppBySlugPattern(path);
path = path.replace(":slug", input.slug);
}
const storageKey = yield this.storageKeyService.generateKey(miniAppData.slug);
//TODO implementar todos os campos faltando para completar a interface MiniAppData
return {
url: input.url,
slug: input.slug,
trusted: this.context.environment === SuperAppEnvironment_1.SuperAppEnvironment.DEV,
isWorkspace: true,
storageKey: storageKey,
permissions: miniAppData === null || miniAppData === void 0 ? void 0 : miniAppData.permissions,
};
catch (e) {
throw new Error("pattern.slug.navigation.failed");
}
if (input.contextParams) {
this.miniAppStackService.setCurrentContextParams(input.contextParams);
}
if (shouldPushState) {
window.history.pushState({}, document.title, path);
}
this.miniAppStackService.pushMiniApp(this.miniAppStackService.getLastMiniAppStackKey(), input);
yield this.openMiniAppInDefaultContainer(input.slug);
});

@@ -173,2 +175,73 @@ this.postMessageToWindow = (window, message) => {

};
this.logout = () => tslib_1.__awaiter(this, void 0, void 0, function* () {
this.miniAppStackService.clearAll();
});
this.internalOpenMiniApp = (input) => tslib_1.__awaiter(this, void 0, void 0, function* () {
if (!input.container || !input.slug) {
throw new Error("slug.and.container.required");
}
const miniAppData = yield this.miniAppManagerService.findMiniApp(input.slug);
if (!miniAppData.url) {
throw new Error("openMiniApp.unpublished");
}
this.checkMiniAppDataTargetValidity(miniAppData, "openMiniApp.target.mismatch");
this.context.miniAppData = miniAppData;
this.context.miniAppData.storageKey = yield this.storageKeyService.generateKey(input.slug);
yield this.initMiniApp({ container: input.container, slug: input.slug, url: miniAppData.url });
});
this.openMiniAppInDefaultContainer = (slug) => tslib_1.__awaiter(this, void 0, void 0, function* () {
const container = this.getCurrentMiniAppContainer();
yield this.internalOpenMiniApp({ slug, container });
});
this.getCurrentMiniAppContainer = () => {
const miniAppFrame = document.getElementById(FRAME_ID);
if (!miniAppFrame) {
throw new Error("miniapp.frame.not.found");
}
const container = miniAppFrame.parentElement;
if (!container) {
throw new Error("miniapp.container.not.found");
}
return container;
};
this.generateMiniAppDataToOpenWorkspace = (parsedCtx) => tslib_1.__awaiter(this, void 0, void 0, function* () {
var _b, _c;
let miniAppData;
let urlToOpen;
if (parsedCtx.withShare) {
console.info("generateMiniAppDataToOpenWorkspace:shareContext");
const env = EnvironmentManager_1.default.fromAmeENV(parsedCtx.withShare.shareEnvironment);
const miniAppDataOnShare = yield this.miniAppManagerService.findShareData({
shareId: parsedCtx.withShare.shareId,
env,
});
miniAppData = yield this.miniAppManagerService.findMiniApp(miniAppDataOnShare.state.slug);
this.checkMiniAppDataTargetValidity(miniAppData, "openMiniAppWorkspace.target.mismatch");
if ((_b = miniAppDataOnShare.state) === null || _b === void 0 ? void 0 : _b.permissions) {
miniAppData.permissions = (_c = miniAppDataOnShare.state) === null || _c === void 0 ? void 0 : _c.permissions;
}
urlToOpen = miniAppDataOnShare.state.miniAppBootstrapUrl;
}
else if (parsedCtx.withUrl) {
console.info("generateMiniAppDataToOpenWorkspace:slug");
miniAppData = yield this.miniAppManagerService.findMiniApp(parsedCtx.withUrl.slug);
this.checkMiniAppDataTargetValidity(miniAppData, "openMiniAppWorkspace.target.mismatch");
urlToOpen = parsedCtx.withUrl.url;
}
else {
throw new Error("shareContext.or.slug.required");
}
const storageKey = yield this.storageKeyService.generateKey(miniAppData.slug);
//TODO implementar todos os campos faltando para completar a interface MiniAppData
//TODO initializationInfos vindas do share
return {
url: urlToOpen,
slug: miniAppData.slug,
trusted: this.context.environment === SuperAppEnvironment_1.SuperAppEnvironment.DEV,
isWorkspace: true,
storageKey: storageKey,
permissions: miniAppData === null || miniAppData === void 0 ? void 0 : miniAppData.permissions,
workspaceData: parsedCtx.withShare,
};
});
console.debug("starting AmeSuperApp...");

@@ -178,27 +251,56 @@ this.superAppService = new SuperAppService_1.default(this);

this.miniAppManagerService = new MiniAppManagerService_1.default();
this.miniAppStackService = new MiniAppStackService_1.default(this.openMiniAppInDefaultContainer);
this.context = new SuperAppContext_1.default();
}
initMiniApp(input) {
var _a;
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
console.debug("abrindo url no sandbox", input.url);
if (!input.container) {
throw new Error("container.not.found");
getInitializationInfos() {
const returnArray = [];
const miniApp = this.miniAppStackService.getLastMiniApp(this.miniAppStackService.getLastMiniAppStackKey());
if (this.miniAppStackService.cameFromBack()) {
if (miniApp.contextParams) {
returnArray.push({
type: "NAVIGATION",
data: miniApp.contextParams,
});
}
(_a = document.getElementById(FRAME_ID)) === null || _a === void 0 ? void 0 : _a.remove();
const frame = document.createElement("iframe");
frame.setAttribute("id", FRAME_ID);
frame.setAttribute("src", input.url);
frame.setAttribute("frameborder", "0");
frame.setAttribute("scrolling", "auto");
frame.setAttribute("style", "width: 100%; height: 100%");
//TODO validar segurança
// frame.setAttribute("sandbox", "allow-scripts");
// frame.setAttribute("csp", "frame-src http://local.calindra.tech/*");
console.debug("parent: ==== contextBeforeOpenMiniApp", this.context);
input.container.appendChild(frame);
});
}
else {
if (miniApp.initializationParams) {
returnArray.push({
type: "NAVIGATION",
data: miniApp.initializationParams,
});
}
}
return returnArray;
}
checkMiniAppDataTargetValidity(miniAppData, errorMessage) {
if (!(miniAppData.target === this.context.target)) {
throw new Error(errorMessage);
}
}
initIFrame(container) {
var _a;
if (!container) {
throw new Error("container.not.found");
}
(_a = document.getElementById(FRAME_ID)) === null || _a === void 0 ? void 0 : _a.remove();
const frame = document.createElement("iframe");
frame.setAttribute("id", FRAME_ID);
frame.setAttribute("frameborder", "0");
frame.setAttribute("scrolling", "auto");
frame.setAttribute("style", "width: 100%; height: 100%");
container.appendChild(frame);
return frame;
}
initMiniApp(input) {
console.debug("abrindo url no sandbox", input.url);
const frame = this.initIFrame(input.container);
frame.setAttribute("src", input.url);
//TODO validar segurança
// frame.setAttribute("sandbox", "allow-scripts");
// frame.setAttribute("csp", "frame-src http://local.calindra.tech/*");
console.debug("parent: ==== contextBeforeOpenMiniApp", this.context);
}
}
exports.default = SuperApp;
//# sourceMappingURL=SuperApp.js.map

@@ -1,2 +0,2 @@

declare const _default: "2.0.0-alpha.0";
declare const _default: "2.0.0";
export default _default;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = "2.0.0-alpha.0";
exports.default = "2.0.0";
//# sourceMappingURL=version.js.map

@@ -5,11 +5,20 @@ "use strict";

const src_1 = require("../src");
const EnvironmentManager_1 = (0, tslib_1.__importDefault)(require("../src/helper/EnvironmentManager"));
const SuperApp_1 = (0, tslib_1.__importDefault)(require("../src/SuperApp"));
const BridgeHelper_1 = (0, tslib_1.__importDefault)(require("./helper/BridgeHelper"));
const SuperAppFactory_1 = (0, tslib_1.__importDefault)(require("./helper/SuperAppFactory"));
const nock_1 = (0, tslib_1.__importDefault)(require("nock"));
const FindMiniAppBySlugFixture_1 = (0, tslib_1.__importDefault)(require("./fixture/FindMiniAppBySlugFixture"));
const Config_1 = (0, tslib_1.__importDefault)(require("../src/config/Config"));
const NockHelper_1 = (0, tslib_1.__importDefault)(require("./helper/NockHelper"));
const EnvironmentManager_1 = tslib_1.__importDefault(require("../src/helper/EnvironmentManager"));
const SuperApp_1 = tslib_1.__importDefault(require("../src/SuperApp"));
const BridgeHelper_1 = tslib_1.__importDefault(require("./helper/BridgeHelper"));
const SuperAppFactory_1 = tslib_1.__importDefault(require("./helper/SuperAppFactory"));
const nock_1 = tslib_1.__importDefault(require("nock"));
const FindMiniAppBySlugFixture_1 = tslib_1.__importDefault(require("./fixture/FindMiniAppBySlugFixture"));
const Config_1 = tslib_1.__importDefault(require("../src/config/Config"));
const NockHelper_1 = tslib_1.__importDefault(require("./helper/NockHelper"));
const ShareMiniAppDataFixture_1 = tslib_1.__importDefault(require("./fixture/ShareMiniAppDataFixture"));
const MiniappPermissionEnum_1 = tslib_1.__importDefault(require("../src/model/MiniappPermissionEnum"));
const universal_base64url_1 = require("universal-base64url");
describe("AmeSuperApp structural tests", () => {
beforeAll(() => {
SuperAppFactory_1.default.mockGetElementById();
});
afterAll(() => {
SuperAppFactory_1.default.clearGetElementByIdMock();
});
test("validate imports", () => {

@@ -22,6 +31,6 @@ const ame = new SuperApp_1.default();

});
test("validate sharedMethods getToken success", () => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
test("validate sharedMethods getToken success", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
var _a, _b, _c;
const tokenVal = "my-token";
const superApp = SuperAppFactory_1.default.withConfigs({ methods: { getToken: () => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () { return tokenVal; }) } });
const superApp = SuperAppFactory_1.default.withConfigs({ methods: { getToken: () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return tokenVal; }) } });
expect((_a = superApp.context.methods) === null || _a === void 0 ? void 0 : _a.getToken).toBeDefined();

@@ -35,2 +44,7 @@ const tokenReceived = yield ((_c = (_b = superApp.context.methods) === null || _b === void 0 ? void 0 : _b.getToken) === null || _c === void 0 ? void 0 : _c.call(_b));

expect(EnvironmentManager_1.default.fromReactENV("development")).toBe(src_1.SuperAppEnvironment.DEV);
expect(EnvironmentManager_1.default.fromAmeENV("dev")).toBe(src_1.SuperAppEnvironment.DEV);
expect(EnvironmentManager_1.default.fromAmeENV("test")).toBe(src_1.SuperAppEnvironment.DEV);
expect(EnvironmentManager_1.default.fromAmeENV("hml")).toBe(src_1.SuperAppEnvironment.HML);
expect(EnvironmentManager_1.default.fromAmeENV("prod")).toBe(src_1.SuperAppEnvironment.PROD);
expect(EnvironmentManager_1.default.fromAmeENV()).toBe(src_1.SuperAppEnvironment.DEV);
let envError = null;

@@ -61,3 +75,3 @@ try {

});
test("SuperApp.openMiniApp()", () => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
test("SuperApp.openMiniApp()", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
var _d;

@@ -82,3 +96,3 @@ const slug = "mySlug";

}));
test("Open Workspace in prod should fail", () => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
test("Open Workspace in prod should fail", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const superApp = SuperAppFactory_1.default.withConfigs({ configs: { environment: src_1.SuperAppEnvironment.PROD } });

@@ -95,3 +109,5 @@ const res = yield superApp

const container = "myContainer";
const superApp = SuperAppFactory_1.default.withConfigs({ configs: { environment: src_1.SuperAppEnvironment.DEV } });
const superApp = SuperAppFactory_1.default.withConfigs({
configs: { environment: src_1.SuperAppEnvironment.DEV, target: src_1.SuperAppTargetEnum.AME_EMPRESAS_WEB },
});
jest.spyOn(superApp, "initMiniApp").mockImplementationOnce((input) => {

@@ -107,2 +123,3 @@ expect(input.url).toBe(url);

permissions: [],
target: src_1.SuperAppTargetEnum.AME_EMPRESAS_WEB,
};

@@ -112,3 +129,79 @@ });

});
test("SuperApp.openMiniAppWorkspace with shareId", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
var _e;
const slug = "mySlug";
const superApp = SuperAppFactory_1.default.withConfigs();
(0, nock_1.default)(`${Config_1.default.profile.share.endpoint}`).get(/.*/).reply(200, ShareMiniAppDataFixture_1.default, NockHelper_1.default.DEFAULT_HEADERS);
(0, nock_1.default)(`${Config_1.default.profile.miniAppManager.endpoint}/o/mini-apps/${slug}`)
.get(/.*/)
.reply(200, FindMiniAppBySlugFixture_1.default, NockHelper_1.default.DEFAULT_HEADERS);
yield superApp.openMiniAppWorkspace({
container: {
appendChild: (iframe) => {
expect(iframe).toBeDefined();
},
},
slug: slug,
context: (0, universal_base64url_1.encode)(JSON.stringify({ shareId: "fake-share-id", shareEnvironment: "dev" })),
});
const miniAppData = (_e = superApp.context) === null || _e === void 0 ? void 0 : _e.miniAppData;
expect(miniAppData).toBeDefined();
expect(miniAppData.slug).toBe(slug);
expect(miniAppData.url).toBe(ShareMiniAppDataFixture_1.default.state.miniAppBootstrapUrl);
expect(miniAppData.permissions).toBeDefined();
expect(miniAppData.permissions).toContain(MiniappPermissionEnum_1.default.USER_BIRTHDATE);
}));
test("SuperApp.openMiniApp with wrong target", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const slug = "mySlug";
const superApp = SuperAppFactory_1.default.withConfigs({ configs: { target: src_1.SuperAppTargetEnum.AME_MINHA_CONTA_WEB } });
(0, nock_1.default)(`${Config_1.default.profile.miniAppManager.endpoint}/o/mini-apps/${slug}`)
.get(/.*/)
.reply(200, FindMiniAppBySlugFixture_1.default, NockHelper_1.default.DEFAULT_HEADERS);
const res = yield superApp
.openMiniApp({
container: {
appendChild: () => { },
},
slug: slug,
})
.then((res) => res)
.catch((e) => e);
expect(res.message).toBe("openMiniApp.target.mismatch");
}));
test("SuperApp.openMiniAppWorkspace without target", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const url = "myUrl";
const slug = "mySlug";
const container = "myContainer";
const superApp = SuperAppFactory_1.default.withConfigs({ configs: { target: src_1.SuperAppTargetEnum.AME_MINHA_CONTA_WEB } });
jest.spyOn(superApp.miniAppManagerService, "findMiniApp").mockImplementationOnce(() => {
return {
slug,
permissions: [],
};
});
const res = yield superApp
.openMiniAppWorkspace({ container, slug, url })
.then((res) => res)
.catch((e) => e);
expect(res.message).toBe("openMiniAppWorkspace.target.mismatch");
}));
test("SuperApp.openMiniAppWorkspace with wrong target", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const url = "myUrl";
const slug = "mySlug";
const container = "myContainer";
const superApp = SuperAppFactory_1.default.withConfigs({ configs: { target: src_1.SuperAppTargetEnum.AME_MINHA_CONTA_WEB } });
jest.spyOn(superApp.miniAppManagerService, "findMiniApp").mockImplementationOnce(() => {
return {
slug,
permissions: [],
target: src_1.SuperAppTargetEnum.AME_EMPRESAS_WEB,
};
});
const res = yield superApp
.openMiniAppWorkspace({ container, slug, url })
.then((res) => res)
.catch((e) => e);
expect(res.message).toBe("openMiniAppWorkspace.target.mismatch");
}));
});
//# sourceMappingURL=AmeSuperApp.test.js.map

@@ -5,8 +5,11 @@ import SharedMethods from "../../src/model/SharedMethods";

static DEFAULT_TEST_SLUG: string;
static containerMock: any;
static frameMock: any;
static withConfigs(params?: {
configs?: any;
methods?: SharedMethods;
urlPatterns?: any;
}): SuperApp;
static withMiniAppLoaded(superApp: SuperApp): Promise<SuperApp>;
static mockGetElementById(): void;
static clearGetElementByIdMock(): void;
}
"use strict";
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const SuperAppEnvironment_1 = require("../../src/model/SuperAppEnvironment");
const SuperApp_1 = (0, tslib_1.__importDefault)(require("../../src/SuperApp"));
const FindMiniAppBySlugFixture_1 = (0, tslib_1.__importDefault)(require("../fixture/FindMiniAppBySlugFixture"));
const NockHelper_1 = (0, tslib_1.__importDefault)(require("./NockHelper"));
const nock_1 = (0, tslib_1.__importDefault)(require("nock"));
const Config_1 = (0, tslib_1.__importDefault)(require("../../src/config/Config"));
const SuperApp_1 = tslib_1.__importDefault(require("../../src/SuperApp"));
const FindMiniAppBySlugFixture_1 = tslib_1.__importDefault(require("../fixture/FindMiniAppBySlugFixture"));
const NockHelper_1 = tslib_1.__importDefault(require("./NockHelper"));
const nock_1 = tslib_1.__importDefault(require("nock"));
const Config_1 = tslib_1.__importDefault(require("../../src/config/Config"));
const src_1 = require("../../src");
class SuperAppFactory {
static withConfigs(params) {
var _a;
var _b, _c;
const ame = new SuperApp_1.default();
ame.init({
url: "http://localhost",
environment: ((_a = params === null || params === void 0 ? void 0 : params.configs) === null || _a === void 0 ? void 0 : _a.environment) || SuperAppEnvironment_1.SuperAppEnvironment.DEV,
environment: ((_b = params === null || params === void 0 ? void 0 : params.configs) === null || _b === void 0 ? void 0 : _b.environment) || SuperAppEnvironment_1.SuperAppEnvironment.DEV,
target: ((_c = params === null || params === void 0 ? void 0 : params.configs) === null || _c === void 0 ? void 0 : _c.target) || src_1.SuperAppTargetEnum.AME_EMPRESAS_WEB,
methods: params === null || params === void 0 ? void 0 : params.methods,
urlPatterns: (params === null || params === void 0 ? void 0 : params.urlPatterns) || {
openMiniAppBySlug: "https://www.calindra.tech/miniapps/:slug",
urlPatterns: {
openMiniAppBySlug: "/app/:slug",
},

@@ -25,3 +28,3 @@ });

static withMiniAppLoaded(superApp) {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const slug = this.DEFAULT_TEST_SLUG;

@@ -42,5 +45,27 @@ (0, nock_1.default)(`${Config_1.default.profile.miniAppManager.endpoint}/o/mini-apps/${slug}`)

}
static mockGetElementById() {
jest.spyOn(document, "getElementById").mockImplementation(() => {
return this.frameMock;
});
}
static clearGetElementByIdMock() {
jest.spyOn(document, "getElementById").mockClear();
}
}
exports.default = SuperAppFactory;
_a = SuperAppFactory;
SuperAppFactory.DEFAULT_TEST_SLUG = "mySlug";
SuperAppFactory.containerMock = {
appendChild: (iframe) => {
expect(iframe).toBeDefined();
},
remove: () => { },
};
SuperAppFactory.frameMock = {
appendChild: (iframe) => {
expect(iframe).toBeDefined();
},
remove: () => { },
parentElement: _a.containerMock,
};
//# sourceMappingURL=SuperAppFactory.js.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const Config_1 = (0, tslib_1.__importDefault)(require("../../src/config/Config"));
const Config_1 = tslib_1.__importDefault(require("../../src/config/Config"));
const SuperAppEnvironment_1 = require("../../src/model/SuperAppEnvironment");

@@ -10,3 +10,3 @@ describe("Config tests", () => {

});
test("validate props from env", () => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
test("validate props from env", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
Config_1.default.init(SuperAppEnvironment_1.SuperAppEnvironment.DEV);

@@ -19,7 +19,7 @@ const props = Config_1.default.profile;

}));
test("validate props in fluid access", () => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
test("validate props in fluid access", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
Config_1.default.init(SuperAppEnvironment_1.SuperAppEnvironment.DEV);
expect(Config_1.default.profile.projectName).toBe("ame-super-app-web");
}));
test("validate exception on config not initialized", () => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
test("validate exception on config not initialized", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
let profile;

@@ -36,3 +36,3 @@ try {

}));
test("validate exception on init with environment required", () => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
test("validate exception on init with environment required", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
let profile;

@@ -39,0 +39,0 @@ try {

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const Config_1 = (0, tslib_1.__importDefault)(require("../../src/config/Config"));
const Config_1 = tslib_1.__importDefault(require("../../src/config/Config"));
const SuperAppEnvironment_1 = require("../../src/model/SuperAppEnvironment");
const MiniAppManagerService_1 = (0, tslib_1.__importDefault)(require("../../src/service/MiniAppManagerService"));
const nock_1 = (0, tslib_1.__importDefault)(require("nock"));
const NockHelper_1 = (0, tslib_1.__importDefault)(require("../helper/NockHelper"));
const FindMiniAppBySlugFixture_1 = (0, tslib_1.__importDefault)(require("../fixture/FindMiniAppBySlugFixture"));
const MiniAppManagerService_1 = tslib_1.__importDefault(require("../../src/service/MiniAppManagerService"));
const nock_1 = tslib_1.__importDefault(require("nock"));
const NockHelper_1 = tslib_1.__importDefault(require("../helper/NockHelper"));
const FindMiniAppBySlugFixture_1 = tslib_1.__importDefault(require("../fixture/FindMiniAppBySlugFixture"));
describe("MiniAppManagerService", () => {
beforeAll(() => Config_1.default.init(SuperAppEnvironment_1.SuperAppEnvironment.DEV));
beforeEach(() => nock_1.default.cleanAll());
test("findById", () => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
test("findById", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const slug = "mySlug";

@@ -15,0 +15,0 @@ (0, nock_1.default)(`${Config_1.default.profile.miniAppManager.endpoint}/o/mini-apps/${slug}`)

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const StorageKeyService_1 = (0, tslib_1.__importDefault)(require("../../src/service/StorageKeyService"));
const StorageKeyService_1 = tslib_1.__importDefault(require("../../src/service/StorageKeyService"));
describe("StorageKeyService", () => {
test("validateStorageKeys", () => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
test("validateStorageKeys", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const keyService = new StorageKeyService_1.default();

@@ -8,0 +8,0 @@ const slug = "myApp1";

@@ -5,7 +5,13 @@ "use strict";

const SuperAppEnvironment_1 = require("../../src/model/SuperAppEnvironment");
const BridgeHelper_1 = (0, tslib_1.__importDefault)(require("../helper/BridgeHelper"));
const SuperAppFactory_1 = (0, tslib_1.__importDefault)(require("../helper/SuperAppFactory"));
const BridgeHelper_1 = tslib_1.__importDefault(require("../helper/BridgeHelper"));
const SuperAppFactory_1 = tslib_1.__importDefault(require("../helper/SuperAppFactory"));
describe("SuperAppService structural tests", () => {
beforeAll(() => {
SuperAppFactory_1.default.mockGetElementById();
});
afterAll(() => {
SuperAppFactory_1.default.clearGetElementByIdMock();
});
test("Ame.askUserData()", (done) => {
(() => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const customerName = "My Name";

@@ -15,3 +21,3 @@ const methodName = "askUserData";

methods: {
askUserData: (slug) => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
askUserData: (slug) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
return { customerName, slug };

@@ -46,20 +52,25 @@ }),

});
test("Ame.openMiniApp success", (done) => {
const superApp = SuperAppFactory_1.default.withConfigs();
const methodName = "openMiniApp";
const args = [{ slug: "my-slug" }];
const containerMockObj = { container: true };
jest.spyOn(window.history, "pushState").mockImplementationOnce(() => { });
jest.spyOn(superApp, "getCurrentMiniAppContainer").mockImplementationOnce(() => {
return containerMockObj;
});
jest.spyOn(superApp, "openMiniApp").mockImplementationOnce((input) => {
expect(input.container).toMatchObject(containerMockObj);
});
superApp.receiveMessage(BridgeHelper_1.default.mockMethodMessage(methodName, args, (message) => {
expect(message).toBeDefined();
expect(message.promiseId).toBeDefined();
expect(message.methodName).toBe("resolvePromise");
done();
}));
test("Ame.openMiniApp() via bridge success", (done) => {
(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const slug = "my-slug";
const superApp = yield SuperAppFactory_1.default.withMiniAppLoaded(SuperAppFactory_1.default.withConfigs());
const methodName = "openMiniApp";
const args = [{ slug: slug }];
const containerMockObj = { container: true };
jest.spyOn(superApp, "getCurrentMiniAppContainer").mockImplementationOnce(() => {
return containerMockObj;
});
jest.spyOn(superApp, "pushMiniApp").mockImplementationOnce((input) => {
console.debug("pushMiniApp received on superApp", input);
expect(input).toBeDefined();
expect(input.slug).toBe(slug);
});
superApp.receiveMessage(BridgeHelper_1.default.mockMethodMessage(methodName, args, (message) => {
console.debug("message returned to client", message);
expect(message).toBeDefined();
expect(message.promiseId).toBeDefined();
expect(message.methodName).toBe("resolvePromise");
done();
}));
}))();
});

@@ -70,3 +81,3 @@ test.each([

{ input: { slug: { k: "v" } }, expectedErrorMessage: "openMiniApp.input.slug.must.be.string" },
])("Ame.openMiniApp input validation (%#)", (testContext) => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
])("Ame.openMiniApp input validation (%#)", (testContext) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const superApp = SuperAppFactory_1.default.withConfigs();

@@ -73,0 +84,0 @@ const error = yield superApp.superAppService.openMiniApp(testContext.input).catch((e) => e);

{
"name": "ame-super-app-web",
"version": "2.0.0-alpha.0",
"version": "2.0.0",
"_versionBetaExample": "1.0.2-beta.0",

@@ -13,5 +13,2 @@ "__versionBetaExample": "1.0.2-alpha.0",

"types": "./dist/tsc/src/index.d.ts",
"bin": {
"my-cli-tool": "./dist/esbuild/cli.js"
},
"scripts": {

@@ -31,6 +28,6 @@ "lint": "eslint src/ --ext .js,.jsx,.ts,.tsx",

"prepare": "cd .. && husky install",
"server": "cd ../server && yarn start",
"dev-browser": "concurrently --kill-others \"yarn esbuild-browser:watch\" \"yarn server\"",
"link-ame-sua-conta": "./scripts/link-ame-sua-conta.sh",
"unlink-ame-sua-conta": "./scripts/unlink-ame-sua-conta.sh"
"link-ame-sua-conta": "./scripts/link-target.sh ame-sua-conta",
"unlink-ame-sua-conta": "./scripts/unlink-target.sh ame-sua-conta",
"link-ame-minha-conta": "./scripts/link-target.sh ame-minha-conta",
"unlink-ame-minha-conta": "./scripts/unlink-target.sh ame-minha-conta"
},

@@ -44,3 +41,2 @@ "devDependencies": {

"@types/pbkdf2": "^3.1.0",
"@types/qs": "^6.9.7",
"@types/uuid": "^8.3.1",

@@ -82,3 +78,2 @@ "@typescript-eslint/eslint-plugin": "^4.19.0",

"pbkdf2": "^3.1.2",
"qs": "^6.10.3",
"universal-base64url": "1.1.0",

@@ -85,0 +80,0 @@ "uuid": "^8.3.2"

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc