Skip to content

Commit

Permalink
feat: dump polarise-web code from other repo
Browse files Browse the repository at this point in the history
  • Loading branch information
HunnySajid committed Feb 21, 2024
0 parents commit 1451a73
Show file tree
Hide file tree
Showing 5 changed files with 257 additions and 0 deletions.
130 changes: 130 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# Snowpack dependency directory (https://snowpack.dev/)
web_modules/

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional stylelint cache
.stylelintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local

# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache

# Next.js build output
.next
out

# Nuxt.js build / generate output
.nuxt
dist

# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist

# vuepress v2.x temp and cache directory
.temp
.cache

# Docusaurus cache and generated files
.docusaurus

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port

# Stores VSCode versions used for testing VSCode extensions
.vscode-test

# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# polaris-web
64 changes: 64 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import { pubsub } from "./pubsub";

var extensionId = "";

window.addEventListener(
"message",
async (event) => {
// Accept messages only from same window
if (event.source !== window) {
return;
}

if (event.data.type && event.data.type === "signify-extension") {
console.log("Content script loaded from polaris-web");
extensionId = event.data.data.extensionId;
}

if (event.data.type && event.data.type === "signify-signature") {
pubsub.publish("signify-signature", event.data.data);
}
},
false
);

const requestAid = () => {
window.postMessage({ type: "select-identifier" }, "*");
};

const requestCredential = () => {
window.postMessage({ type: "select-credential" }, "*");
};

const requestAidORCred = () => {
window.postMessage({ type: "select-aid-or-credential" }, "*");
};

const requestAutoSignin = async () => {
const { data, error } = await chrome.runtime.sendMessage(extensionId, {
type: "fetch-resource",
subtype: "auto-signin-signature",
});
if (error) {
window.postMessage({ type: "select-auto-signin" }, "*");
} else {
pubsub.publish("signify-signature", data);
}
};

const subscribeToSignature = (func) => {
pubsub.subscribe("signify-signature", (_event, data) => func(data));
};

const unsubscribeFromSignature = () => {
pubsub.unsubscribe("signify-signature");
};

export {
requestAid,
requestCredential,
requestAidORCred,
requestAutoSignin,
subscribeToSignature,
unsubscribeFromSignature,
};
11 changes: 11 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"name": "polaris-web",
"version": "1.0.0",
"description": "companion package for polaris web extension",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Hunain Bin Sajid",
"license": "ISC"
}
51 changes: 51 additions & 0 deletions pubsub.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
export const pubsub = (() => {
const events = {};

let subscribersId = -1;

function publish(event, data) {
if (!events[event]) {
return false;
}

const subscribers = events[event];
subscribers.forEach((subscriber) => {
subscriber.func(event, data);
});
return true;
}

function subscribe(event, func) {
if (!events[event]) {
events[event] = [];
}

subscribersId += 1;
const token = subscribersId.toString();
events[event].push({
token,
func,
});
return token;
}

function unsubscribe(token) {
const found = Object.keys(events).some((event) =>
events[event].some((subscriber, index) => {
const areEqual = subscriber.token === token.toString();
if (areEqual) {
events[event].splice(index, 1);
}
return areEqual;
})
);

return found ? token : null;
}

return {
publish,
subscribe,
unsubscribe,
};
})();

0 comments on commit 1451a73

Please sign in to comment.