Skip to content

Commit

Permalink
added abstract @match header generator
Browse files Browse the repository at this point in the history
  • Loading branch information
Oaphi committed Aug 9, 2021
1 parent 0839cda commit d32e014
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 9 deletions.
16 changes: 13 additions & 3 deletions src/generators/greasemonkey/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
import { generateGrantHeaders, HeaderEntries, HeaderGenerator } from "..";
import {
generateGrantHeaders,
generateMatchHeaders,
HeaderEntries,
HeaderGenerator,
} from "..";
import { finalizeMonkeyHeaders } from "../common/monkey";
import {
GreasemonkeyGrantOptions,
Expand All @@ -8,7 +13,7 @@ import {

//TODO: finish creating the processor
export const generateGreasemonkeyHeaders: HeaderGenerator<GreasemonkeyGrantOptions> =
(_packageInfo, { grants = [] }) => {
(_packageInfo, { matches = [], grants = [] }) => {
const grantMap: Record<GreasemonkeyGrantOptions, GreasemonkeyGrants> = {
set: "GM.setValue",
get: "GM.getValue",
Expand All @@ -20,12 +25,17 @@ export const generateGreasemonkeyHeaders: HeaderGenerator<GreasemonkeyGrantOptio
unsafe: "unsafeWindow",
};

const matchHeaders = generateMatchHeaders(matches);

const grantHeaders = generateGrantHeaders<
GreasemonkeyHeaders,
GreasemonkeyGrantOptions
>(grantMap, grants);

const headers: HeaderEntries<GreasemonkeyHeaders> = [...grantHeaders];
const headers: HeaderEntries<GreasemonkeyHeaders> = [
...grantHeaders,
...matchHeaders,
];

return finalizeMonkeyHeaders(headers, 4);
};
13 changes: 11 additions & 2 deletions src/generators/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,12 @@ export type CommonHeaders<T extends object = {}> = T & {

export type CustomHeaders = { contributors: string };

export type HeaderEntry<T> = [keyof T & string, T[keyof T]];
export type HeaderEntry<T> = [keyof T & string, string];

export type HeaderEntries<T> = HeaderEntry<T>[];

/**
* @summary abstract header generator
* @summary abstract '@grant' header generator
*/
export const generateGrantHeaders = <
T extends CommonHeaders,
Expand All @@ -71,3 +71,12 @@ export const generateGrantHeaders = <
? grantHeaders
: ([["grant", "none"]] as HeaderEntries<Pick<T, "grant">>);
};

/**
* @summary abstract '@match' header generator
*/
export const generateMatchHeaders = <T extends CommonHeaders>(
matches: string[]
): HeaderEntries<T> => {
return matches.map((uri) => ["match", uri]);
};
6 changes: 2 additions & 4 deletions src/generators/tampermonkey/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { generateGrantHeaders, HeaderEntries, HeaderGenerator } from "..";
import { generateGrantHeaders, generateMatchHeaders, HeaderEntries, HeaderGenerator } from "..";
import { formatAuthor, parseAuthor } from "../../utils/author";
import { parseName } from "../../utils/common";
import { finalizeMonkeyHeaders } from "../common/monkey";
Expand Down Expand Up @@ -26,9 +26,7 @@ export const generateTampermonkeyHeaders: HeaderGenerator<TampermonkeyGrantOptio
const parsedAuthor = parseAuthor(author);
const { packageName, scope } = parseName(name);

const matchHeaders: HeaderEntries<TampermonkeyHeaders> = matches.map(
(uri) => ["match", uri]
);
const matchHeaders = generateMatchHeaders(matches);

const grantMap: Record<TampermonkeyGrantOptions, TampermonkeyGrants> = {
set: "GM_setValue",
Expand Down

0 comments on commit d32e014

Please # to comment.