roamjs-components 0.80.3 → 0.82.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/hooks/index.d.ts CHANGED
@@ -1,3 +1,2 @@
1
1
  export { default as useArrowKeyDown } from "./useArrowKeyDown";
2
- export { default as useRoamJSTokenWarning } from "./useRoamJSTokenWarning";
3
2
  export { default as useSubTree } from "./useSubTree";
package/hooks/index.js CHANGED
@@ -3,11 +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.useSubTree = exports.useRoamJSTokenWarning = exports.useArrowKeyDown = void 0;
6
+ exports.useSubTree = exports.useArrowKeyDown = void 0;
7
7
  var useArrowKeyDown_1 = require("./useArrowKeyDown");
8
8
  Object.defineProperty(exports, "useArrowKeyDown", { enumerable: true, get: function () { return __importDefault(useArrowKeyDown_1).default; } });
9
- var useRoamJSTokenWarning_1 = require("./useRoamJSTokenWarning");
10
- Object.defineProperty(exports, "useRoamJSTokenWarning", { enumerable: true, get: function () { return __importDefault(useRoamJSTokenWarning_1).default; } });
11
9
  var useSubTree_1 = require("./useSubTree");
12
10
  Object.defineProperty(exports, "useSubTree", { enumerable: true, get: function () { return __importDefault(useSubTree_1).default; } });
13
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":";;;;;;AAAA,qDAA+D;AAAtD,mIAAA,OAAO,OAAmB;AACnC,iEAA2E;AAAlE,+IAAA,OAAO,OAAyB;AACzC,2CAAqD;AAA5C,yHAAA,OAAO,OAAc","sourcesContent":["export { default as useArrowKeyDown } from \"./useArrowKeyDown\";\nexport { default as useRoamJSTokenWarning } from \"./useRoamJSTokenWarning\";\nexport { default as useSubTree } from \"./useSubTree\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":";;;;;;AAAA,qDAA+D;AAAtD,mIAAA,OAAO,OAAmB;AACnC,2CAAqD;AAA5C,yHAAA,OAAO,OAAc","sourcesContent":["export { default as useArrowKeyDown } from \"./useArrowKeyDown\";\nexport { default as useSubTree } from \"./useSubTree\";\n"]}
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "roamjs-components",
3
3
  "description": "Expansive toolset, utilities, & components for developing RoamJS extensions.",
4
- "version": "0.80.3",
4
+ "version": "0.82.0",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
7
7
  "scripts": {
8
+ "postinstall": "patch-package",
8
9
  "format": "prettier --write \"src/**/*.tsx\"",
9
10
  "lint": "eslint . --ext .ts,.tsx",
10
11
  "build": "tsc",
@@ -45,8 +46,7 @@
45
46
  "use-sync-external-store": "^1.2.0"
46
47
  },
47
48
  "dependencies": {
48
- "@samepage/scripts": "^0.71.10",
49
- "@testing-library/react": "^12.1.5",
49
+ "@samepage/scripts": "^0.74.2",
50
50
  "aws-sdk-plus": "^0.5.3",
51
51
  "color": "^4.0.1",
52
52
  "date-fns": "^2.27.0",
@@ -77,6 +77,12 @@
77
77
  "bin": {
78
78
  "roamjs": "./scripts/index.js"
79
79
  },
80
+ "overrides": {
81
+ "@testing-library/react": {
82
+ "react": "17.0.2",
83
+ "react-dom": "17.0.2"
84
+ }
85
+ },
80
86
  "samepage": {
81
87
  "external": [
82
88
  "react-dom/client",
@@ -1,3 +0,0 @@
1
- import type { APIGatewayProxyResult } from "aws-lambda";
2
- declare const emailCatch: (subject: string) => (e: Error) => Promise<APIGatewayProxyResult>;
3
- export default emailCatch;
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const emailError_1 = tslib_1.__importDefault(require("./emailError"));
5
- const headers_1 = tslib_1.__importDefault(require("./headers"));
6
- const emailCatch = (subject) => (e) => {
7
- const errorCode = Number(e.name);
8
- if (errorCode >= 400 && errorCode < 500) {
9
- return Promise.resolve({
10
- statusCode: errorCode,
11
- body: e.message,
12
- headers: headers_1.default,
13
- });
14
- }
15
- return (0, emailError_1.default)(subject, e).then((id) => ({
16
- statusCode: 500,
17
- body: `Unknown error - Message Id ${id}`,
18
- headers: headers_1.default,
19
- }));
20
- };
21
- exports.default = emailCatch;
22
- //# sourceMappingURL=emailCatch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"emailCatch.js","sourceRoot":"","sources":["../../src/backend/emailCatch.ts"],"names":[],"mappings":";;;AACA,sEAAsC;AACtC,gEAAgC;AAEhC,MAAM,UAAU,GACd,CAAC,OAAe,EAAE,EAAE,CACpB,CAAC,CAAQ,EAAkC,EAAE;IAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,GAAG,GAAG,EAAE;QACvC,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,UAAU,EAAE,SAAS;YACrB,IAAI,EAAE,CAAC,CAAC,OAAO;YACf,OAAO,EAAP,iBAAO;SACR,CAAC,CAAC;KACJ;IACD,OAAO,IAAA,oBAAU,EAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1C,UAAU,EAAE,GAAG;QACf,IAAI,EAAE,8BAA8B,EAAE,EAAE;QACxC,OAAO,EAAP,iBAAO;KACR,CAAC,CAAC,CAAC;AACN,CAAC,CAAC;AAEJ,kBAAe,UAAU,CAAC","sourcesContent":["import type { APIGatewayProxyResult } from \"aws-lambda\";\nimport emailError from \"./emailError\";\nimport headers from \"./headers\";\n\nconst emailCatch =\n (subject: string) =>\n (e: Error): Promise<APIGatewayProxyResult> => {\n const errorCode = Number(e.name);\n if (errorCode >= 400 && errorCode < 500) {\n return Promise.resolve({\n statusCode: errorCode,\n body: e.message,\n headers,\n });\n }\n return emailError(subject, e).then((id) => ({\n statusCode: 500,\n body: `Unknown error - Message Id ${id}`,\n headers,\n }));\n };\n\nexport default emailCatch;\n"]}
@@ -1,3 +0,0 @@
1
- import React from "react";
2
- declare const emailError: (subject: string, e: Error, moreBody?: React.ReactNode) => Promise<string>;
3
- export default emailError;
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const sendEmail_1 = tslib_1.__importDefault(require("aws-sdk-plus/dist/sendEmail"));
5
- const react_1 = tslib_1.__importDefault(require("react"));
6
- const emailError = (subject, e, moreBody) => {
7
- return (0, sendEmail_1.default)({
8
- to: process.env.ROAMJS_EMAIL,
9
- from: "support@roamjs.com",
10
- subject: `RoamJS Error: ${subject}`,
11
- body: react_1.default.createElement("div", {
12
- style: {
13
- margin: "0 auto",
14
- maxWidth: 600,
15
- fontFamily: `"Proxima Nova","proxima-nova",Helvetica,Arial sans-serif`,
16
- padding: `20px 0`,
17
- },
18
- }, react_1.default.createElement("div", {
19
- style: {
20
- width: "80%",
21
- margin: "0 auto",
22
- paddingBottom: 20,
23
- borderBottom: "1px dashed #dadada",
24
- textAlign: "center",
25
- },
26
- }, react_1.default.createElement("img", {
27
- src: "https://roamjs.com/images/logo-low-res.png",
28
- width: 128,
29
- })), react_1.default.createElement("div", {
30
- style: {
31
- width: "80%",
32
- margin: "30px auto",
33
- fontSize: 16,
34
- whiteSpace: "pre-wrap",
35
- },
36
- }, react_1.default.createElement("h3", {}, `An error was thrown in a RoamJS Lambda`), react_1.default.createElement("p", {}, `${e.name}: ${e.message}`), react_1.default.createElement("p", {}, e.stack), ...(moreBody ? [react_1.default.createElement("div", {}, moreBody)] : [])), react_1.default.createElement("div", {
37
- style: {
38
- width: "80%",
39
- margin: "30px auto",
40
- borderTop: "1px dashed #dadada",
41
- display: "flex",
42
- color: "#a8a8a8",
43
- paddingTop: 15,
44
- },
45
- }, react_1.default.createElement("div", { style: { width: "50%" } }, "Sent From ", react_1.default.createElement("a", {
46
- href: "https://roamjs.com",
47
- style: { color: "#3ba4dc", textDecoration: "none" },
48
- }, "RoamJS")), react_1.default.createElement("div", { style: { width: "50%", textAlign: "right" } }, react_1.default.createElement("a", {
49
- href: "mailto:support@roamjs.com",
50
- style: { color: "#3ba4dc", textDecoration: "none" },
51
- }, "Contact Support")))),
52
- });
53
- };
54
- exports.default = emailError;
55
- //# sourceMappingURL=emailError.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"emailError.js","sourceRoot":"","sources":["../../src/backend/emailError.ts"],"names":[],"mappings":";;;AAAA,oFAAoD;AACpD,0DAA0B;AAE1B,MAAM,UAAU,GAAG,CACjB,OAAe,EACf,CAAQ,EACR,QAA0B,EACT,EAAE;IACnB,OAAO,IAAA,mBAAS,EAAC;QACf,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QAC5B,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,iBAAiB,OAAO,EAAE;QACnC,IAAI,EAAE,eAAK,CAAC,aAAa,CACvB,KAAK,EACL;YACE,KAAK,EAAE;gBACL,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,GAAG;gBACb,UAAU,EAAE,0DAA0D;gBACtE,OAAO,EAAE,QAAQ;aAClB;SACF,EACD,eAAK,CAAC,aAAa,CACjB,KAAK,EACL;YACE,KAAK,EAAE;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,QAAQ;gBAChB,aAAa,EAAE,EAAE;gBACjB,YAAY,EAAE,oBAAoB;gBAClC,SAAS,EAAE,QAAQ;aACpB;SACF,EACD,eAAK,CAAC,aAAa,CAAC,KAAK,EAAE;YACzB,GAAG,EAAE,4CAA4C;YACjD,KAAK,EAAE,GAAG;SACX,CAAC,CACH,EACD,eAAK,CAAC,aAAa,CACjB,KAAK,EACL;YACE,KAAK,EAAE;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,WAAW;gBACnB,QAAQ,EAAE,EAAE;gBACZ,UAAU,EAAE,UAAU;aACvB;SACF,EACD,eAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,wCAAwC,CAAC,EACvE,eAAK,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,EACvD,eAAK,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EACrC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAChE,EACD,eAAK,CAAC,aAAa,CACjB,KAAK,EACL;YACE,KAAK,EAAE;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,WAAW;gBACnB,SAAS,EAAE,oBAAoB;gBAC/B,OAAO,EAAE,MAAM;gBACf,KAAK,EAAE,SAAS;gBAChB,UAAU,EAAE,EAAE;aACf;SACF,EACD,eAAK,CAAC,aAAa,CACjB,KAAK,EACL,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAC3B,YAAY,EACZ,eAAK,CAAC,aAAa,CACjB,GAAG,EACH;YACE,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE;SACpD,EACD,QAAQ,CACT,CACF,EACD,eAAK,CAAC,aAAa,CACjB,KAAK,EACL,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAC/C,eAAK,CAAC,aAAa,CACjB,GAAG,EACH;YACE,IAAI,EAAE,2BAA2B;YACjC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE;SACpD,EACD,iBAAiB,CAClB,CACF,CACF,CACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC","sourcesContent":["import sendEmail from \"aws-sdk-plus/dist/sendEmail\";\nimport React from \"react\";\n\nconst emailError = (\n subject: string,\n e: Error,\n moreBody?: React.ReactNode\n): Promise<string> => {\n return sendEmail({\n to: process.env.ROAMJS_EMAIL,\n from: \"support@roamjs.com\",\n subject: `RoamJS Error: ${subject}`,\n body: React.createElement(\n \"div\",\n {\n style: {\n margin: \"0 auto\",\n maxWidth: 600,\n fontFamily: `\"Proxima Nova\",\"proxima-nova\",Helvetica,Arial sans-serif`,\n padding: `20px 0`,\n },\n },\n React.createElement(\n \"div\",\n {\n style: {\n width: \"80%\",\n margin: \"0 auto\",\n paddingBottom: 20,\n borderBottom: \"1px dashed #dadada\",\n textAlign: \"center\",\n },\n },\n React.createElement(\"img\", {\n src: \"https://roamjs.com/images/logo-low-res.png\",\n width: 128,\n })\n ),\n React.createElement(\n \"div\",\n {\n style: {\n width: \"80%\",\n margin: \"30px auto\",\n fontSize: 16,\n whiteSpace: \"pre-wrap\",\n },\n },\n React.createElement(\"h3\", {}, `An error was thrown in a RoamJS Lambda`),\n React.createElement(\"p\", {}, `${e.name}: ${e.message}`),\n React.createElement(\"p\", {}, e.stack),\n ...(moreBody ? [React.createElement(\"div\", {}, moreBody)] : [])\n ),\n React.createElement(\n \"div\",\n {\n style: {\n width: \"80%\",\n margin: \"30px auto\",\n borderTop: \"1px dashed #dadada\",\n display: \"flex\",\n color: \"#a8a8a8\",\n paddingTop: 15,\n },\n },\n React.createElement(\n \"div\",\n { style: { width: \"50%\" } },\n \"Sent From \",\n React.createElement(\n \"a\",\n {\n href: \"https://roamjs.com\",\n style: { color: \"#3ba4dc\", textDecoration: \"none\" },\n },\n \"RoamJS\"\n )\n ),\n React.createElement(\n \"div\",\n { style: { width: \"50%\", textAlign: \"right\" } },\n React.createElement(\n \"a\",\n {\n href: \"mailto:support@roamjs.com\",\n style: { color: \"#3ba4dc\", textDecoration: \"none\" },\n },\n \"Contact Support\"\n )\n )\n )\n ),\n });\n};\n\nexport default emailError;\n"]}
@@ -1,17 +0,0 @@
1
- import { APIGatewayProxyResult, APIGatewayProxyHandler } from "aws-lambda";
2
- declare type RoamJSUser = {
3
- email: string;
4
- id: string;
5
- [k: string]: unknown;
6
- };
7
- declare const getRoamJSUser: ({ token, extensionId, email, dev, params, }: {
8
- token: string;
9
- extensionId?: string | undefined;
10
- email?: string | undefined;
11
- dev?: boolean | undefined;
12
- params?: Record<string, string> | undefined;
13
- }) => Promise<RoamJSUser>;
14
- export declare const awsGetRoamJSUser: <T = Record<string, unknown>>(handler: (u: RoamJSUser & {
15
- token: string;
16
- }, body: T) => Promise<APIGatewayProxyResult>, params?: Record<string, string>) => APIGatewayProxyHandler;
17
- export default getRoamJSUser;
@@ -1,53 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.awsGetRoamJSUser = void 0;
4
- const tslib_1 = require("tslib");
5
- const https_1 = tslib_1.__importDefault(require("https"));
6
- const http_1 = tslib_1.__importDefault(require("http"));
7
- const url_1 = require("url");
8
- const headers_1 = tslib_1.__importDefault(require("./headers"));
9
- const getRoamJSUser = ({ token, extensionId = process.env.ROAMJS_EXTENSION_ID || "", email = process.env.ROAMJS_EMAIL, dev = process.env.NODE_ENV === "development", params = {}, }) => {
10
- const url = new url_1.URL(`${process.env.API_URL || "https://lambda.roamjs.com"}/user`);
11
- const mod = url.protocol === "http:" ? http_1.default : https_1.default;
12
- Object.entries(params).forEach(([k, v]) => url.searchParams.append(k, v));
13
- return new Promise((resolve, reject) => mod
14
- .get(url, {
15
- headers: Object.assign({ Authorization: `Bearer ${Buffer.from(`${email}:${process.env.ROAMJS_DEVELOPER_TOKEN}`).toString("base64")}`, "x-roamjs-token": token, "x-roamjs-extension": extensionId }, (dev
16
- ? {
17
- "x-roamjs-dev": "true",
18
- }
19
- : {})),
20
- }, (res) => {
21
- res.setEncoding("utf8");
22
- let body = "";
23
- res.on("data", (data) => {
24
- body += data;
25
- });
26
- res.on("end", () => {
27
- if (!res.statusCode)
28
- reject("Missing Status Code");
29
- else if (res.statusCode >= 200 && res.statusCode < 400)
30
- resolve(JSON.parse(body));
31
- else {
32
- const err = new Error(body);
33
- err.name = `${res.statusCode}`;
34
- reject(err);
35
- }
36
- });
37
- res.on("error", reject);
38
- })
39
- .on("error", reject));
40
- };
41
- const awsGetRoamJSUser = (handler, params) => (event) => {
42
- const token = event.headers.Authorization || event.headers.authorization || "";
43
- return getRoamJSUser({ token, params })
44
- .then((u) => handler(Object.assign(Object.assign({}, u), { token }), Object.assign(Object.assign({}, event.queryStringParameters), JSON.parse(event.body || "{}"))))
45
- .catch((e) => ({
46
- statusCode: Number(e.name) || 500,
47
- body: e.message,
48
- headers: headers_1.default,
49
- }));
50
- };
51
- exports.awsGetRoamJSUser = awsGetRoamJSUser;
52
- exports.default = getRoamJSUser;
53
- //# sourceMappingURL=getRoamJSUser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getRoamJSUser.js","sourceRoot":"","sources":["../../src/backend/getRoamJSUser.ts"],"names":[],"mappings":"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","sourcesContent":["import https from \"https\";\nimport http from \"http\";\nimport { URL } from \"url\";\nimport { APIGatewayProxyResult, APIGatewayProxyHandler } from \"aws-lambda\";\nimport headers from \"./headers\";\n\ntype RoamJSUser = { email: string; id: string; [k: string]: unknown };\n\nconst getRoamJSUser = ({\n token,\n extensionId = process.env.ROAMJS_EXTENSION_ID || \"\",\n email = process.env.ROAMJS_EMAIL,\n dev = process.env.NODE_ENV === \"development\",\n params = {},\n}: {\n token: string;\n extensionId?: string;\n email?: string;\n dev?: boolean;\n params?: Record<string, string>;\n}) => {\n const url = new URL(\n `${process.env.API_URL || \"https://lambda.roamjs.com\"}/user`\n );\n const mod = url.protocol === \"http:\" ? http : https;\n Object.entries(params).forEach(([k, v]) => url.searchParams.append(k, v));\n return new Promise<RoamJSUser>((resolve, reject) =>\n mod\n .get(\n url,\n {\n headers: {\n Authorization: `Bearer ${Buffer.from(\n `${email}:${process.env.ROAMJS_DEVELOPER_TOKEN}`\n ).toString(\"base64\")}`,\n \"x-roamjs-token\": token,\n \"x-roamjs-extension\": extensionId,\n ...(dev\n ? {\n \"x-roamjs-dev\": \"true\",\n }\n : {}),\n },\n },\n (res) => {\n res.setEncoding(\"utf8\");\n let body = \"\";\n res.on(\"data\", (data) => {\n body += data;\n });\n res.on(\"end\", () => {\n if (!res.statusCode) reject(\"Missing Status Code\");\n else if (res.statusCode >= 200 && res.statusCode < 400)\n resolve(JSON.parse(body) as RoamJSUser);\n else {\n const err = new Error(body);\n err.name = `${res.statusCode}`;\n reject(err);\n }\n });\n res.on(\"error\", reject);\n }\n )\n .on(\"error\", reject)\n );\n};\n\nexport const awsGetRoamJSUser =\n <T = Record<string, unknown>>(\n handler: (\n u: RoamJSUser & { token: string },\n body: T\n ) => Promise<APIGatewayProxyResult>,\n params?: Record<string, string>\n ): APIGatewayProxyHandler =>\n (event) => {\n const token =\n event.headers.Authorization || event.headers.authorization || \"\";\n return getRoamJSUser({ token, params })\n .then((u) =>\n handler({ ...u, token }, {\n ...event.queryStringParameters,\n ...JSON.parse(event.body || \"{}\"),\n } as T)\n )\n .catch((e) => ({\n statusCode: Number(e.name) || 500,\n body: e.message,\n headers,\n }));\n };\n\nexport default getRoamJSUser;\n"]}
@@ -1,5 +0,0 @@
1
- declare const headers: {
2
- "Access-Control-Allow-Origin": string;
3
- "Access-Control-Allow-Methods": string;
4
- };
5
- export default headers;
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const headers = {
4
- "Access-Control-Allow-Origin": "https://roamresearch.com",
5
- "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE",
6
- };
7
- exports.default = headers;
8
- //# sourceMappingURL=headers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"headers.js","sourceRoot":"","sources":["../../src/backend/headers.ts"],"names":[],"mappings":";;AAAA,MAAM,OAAO,GAAG;IACd,6BAA6B,EAAE,0BAA0B;IACzD,8BAA8B,EAAE,wBAAwB;CACzD,CAAC;AAEF,kBAAe,OAAO,CAAC","sourcesContent":["const headers = {\n \"Access-Control-Allow-Origin\": \"https://roamresearch.com\",\n \"Access-Control-Allow-Methods\": \"GET, POST, PUT, DELETE\",\n};\n\nexport default headers;\n"]}
@@ -1,6 +0,0 @@
1
- export { default as emailCatch } from "./emailCatch";
2
- export { default as emailError } from "./emailError";
3
- export { default as getRoamJSUser, awsGetRoamJSUser } from "./getRoamJSUser";
4
- export { default as headers } from "./headers";
5
- export { default as meterRoamJSUser } from "./meterRoamJSUser";
6
- export { default as putRoamJSUser, awsPutRoamJSUser } from "./putRoamJSUser";
package/backend/index.js DELETED
@@ -1,21 +0,0 @@
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
- exports.awsPutRoamJSUser = exports.putRoamJSUser = exports.meterRoamJSUser = exports.headers = exports.awsGetRoamJSUser = exports.getRoamJSUser = exports.emailError = exports.emailCatch = void 0;
7
- var emailCatch_1 = require("./emailCatch");
8
- Object.defineProperty(exports, "emailCatch", { enumerable: true, get: function () { return __importDefault(emailCatch_1).default; } });
9
- var emailError_1 = require("./emailError");
10
- Object.defineProperty(exports, "emailError", { enumerable: true, get: function () { return __importDefault(emailError_1).default; } });
11
- var getRoamJSUser_1 = require("./getRoamJSUser");
12
- Object.defineProperty(exports, "getRoamJSUser", { enumerable: true, get: function () { return __importDefault(getRoamJSUser_1).default; } });
13
- Object.defineProperty(exports, "awsGetRoamJSUser", { enumerable: true, get: function () { return getRoamJSUser_1.awsGetRoamJSUser; } });
14
- var headers_1 = require("./headers");
15
- Object.defineProperty(exports, "headers", { enumerable: true, get: function () { return __importDefault(headers_1).default; } });
16
- var meterRoamJSUser_1 = require("./meterRoamJSUser");
17
- Object.defineProperty(exports, "meterRoamJSUser", { enumerable: true, get: function () { return __importDefault(meterRoamJSUser_1).default; } });
18
- var putRoamJSUser_1 = require("./putRoamJSUser");
19
- Object.defineProperty(exports, "putRoamJSUser", { enumerable: true, get: function () { return __importDefault(putRoamJSUser_1).default; } });
20
- Object.defineProperty(exports, "awsPutRoamJSUser", { enumerable: true, get: function () { return putRoamJSUser_1.awsPutRoamJSUser; } });
21
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/backend/index.ts"],"names":[],"mappings":";;;;;;AAAA,2CAAqD;AAA5C,yHAAA,OAAO,OAAc;AAC9B,2CAAqD;AAA5C,yHAAA,OAAO,OAAc;AAC9B,iDAA6E;AAApE,+HAAA,OAAO,OAAiB;AAAE,iHAAA,gBAAgB,OAAA;AACnD,qCAA+C;AAAtC,mHAAA,OAAO,OAAW;AAC3B,qDAA+D;AAAtD,mIAAA,OAAO,OAAmB;AACnC,iDAA6E;AAApE,+HAAA,OAAO,OAAiB;AAAE,iHAAA,gBAAgB,OAAA","sourcesContent":["export { default as emailCatch } from \"./emailCatch\";\nexport { default as emailError } from \"./emailError\";\nexport { default as getRoamJSUser, awsGetRoamJSUser } from \"./getRoamJSUser\";\nexport { default as headers } from \"./headers\";\nexport { default as meterRoamJSUser } from \"./meterRoamJSUser\";\nexport { default as putRoamJSUser, awsPutRoamJSUser } from \"./putRoamJSUser\";\n"]}
@@ -1,4 +0,0 @@
1
- declare const meterRoamJSUser: (user: string, quantity?: number, extensionId?: string, email?: string | undefined, dev?: boolean) => Promise<{
2
- id: string;
3
- }>;
4
- export default meterRoamJSUser;
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const https_1 = tslib_1.__importDefault(require("https"));
5
- const meterRoamJSUser = (user, quantity = 1, extensionId = process.env.ROAMJS_EXTENSION_ID || "", email = process.env.ROAMJS_EMAIL, dev = process.env.NODE_ENV === "development") => new Promise((resolve, reject) => {
6
- const req = https_1.default
7
- .request(`https://lambda.roamjs.com/meter`, {
8
- method: "POST",
9
- headers: Object.assign({ Authorization: `Bearer ${Buffer.from(`${email}:${process.env.ROAMJS_DEVELOPER_TOKEN}`).toString("base64")}`, "x-roamjs-extension": extensionId }, (dev
10
- ? {
11
- "x-roamjs-dev": "true",
12
- }
13
- : {})),
14
- }, (res) => {
15
- res.setEncoding("utf8");
16
- let body = "";
17
- res.on("data", (data) => {
18
- body += data;
19
- });
20
- res.on("end", () => {
21
- if (!res.statusCode)
22
- reject("Missing Status Code");
23
- else if (res.statusCode >= 200 && res.statusCode < 400)
24
- resolve(JSON.parse(body));
25
- else {
26
- const err = new Error(body);
27
- err.name = `${res.statusCode}`;
28
- reject(err);
29
- }
30
- });
31
- res.on("error", reject);
32
- })
33
- .on("error", reject);
34
- req.write(JSON.stringify(Object.assign(Object.assign({}, (user.startsWith("user_") ? { id: user } : { email: user })), { quantity })));
35
- req.end();
36
- });
37
- exports.default = meterRoamJSUser;
38
- //# sourceMappingURL=meterRoamJSUser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"meterRoamJSUser.js","sourceRoot":"","sources":["../../src/backend/meterRoamJSUser.ts"],"names":[],"mappings":";;;AAAA,0DAA0B;AAE1B,MAAM,eAAe,GAAG,CACtB,IAAY,EACZ,QAAQ,GAAG,CAAC,EACZ,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,EACnD,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,EAChC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAC5C,EAAE,CACF,IAAI,OAAO,CAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9C,MAAM,GAAG,GAAG,eAAK;SACd,OAAO,CACN,iCAAiC,EACjC;QACE,MAAM,EAAE,MAAM;QACd,OAAO,kBACL,aAAa,EAAE,UAAU,MAAM,CAAC,IAAI,CAClC,GAAG,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CACjD,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EACtB,oBAAoB,EAAE,WAAW,IAC9B,CAAC,GAAG;YACL,CAAC,CAAC;gBACE,cAAc,EAAE,MAAM;aACvB;YACH,CAAC,CAAC,EAAE,CAAC,CACR;KACF,EACD,CAAC,GAAG,EAAE,EAAE;QACN,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACxB,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACtB,IAAI,IAAI,IAAI,CAAC;QACf,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACjB,IAAI,CAAC,GAAG,CAAC,UAAU;gBAAE,MAAM,CAAC,qBAAqB,CAAC,CAAC;iBAC9C,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG;gBACpD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmB,CAAC,CAAC;iBACzC;gBACH,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5B,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;gBAC/B,MAAM,CAAC,GAAG,CAAC,CAAC;aACb;QACH,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC,CACF;SACA,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACvB,GAAG,CAAC,KAAK,CACP,IAAI,CAAC,SAAS,iCACT,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,KAC9D,QAAQ,IACR,CACH,CAAC;IACF,GAAG,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC;AAEL,kBAAe,eAAe,CAAC","sourcesContent":["import https from \"https\";\n\nconst meterRoamJSUser = (\n user: string,\n quantity = 1,\n extensionId = process.env.ROAMJS_EXTENSION_ID || \"\",\n email = process.env.ROAMJS_EMAIL,\n dev = process.env.NODE_ENV === \"development\"\n) =>\n new Promise<{ id: string }>((resolve, reject) => {\n const req = https\n .request(\n `https://lambda.roamjs.com/meter`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${Buffer.from(\n `${email}:${process.env.ROAMJS_DEVELOPER_TOKEN}`\n ).toString(\"base64\")}`,\n \"x-roamjs-extension\": extensionId,\n ...(dev\n ? {\n \"x-roamjs-dev\": \"true\",\n }\n : {}),\n },\n },\n (res) => {\n res.setEncoding(\"utf8\");\n let body = \"\";\n res.on(\"data\", (data) => {\n body += data;\n });\n res.on(\"end\", () => {\n if (!res.statusCode) reject(\"Missing Status Code\");\n else if (res.statusCode >= 200 && res.statusCode < 400)\n resolve(JSON.parse(body) as { id: string });\n else {\n const err = new Error(body);\n err.name = `${res.statusCode}`;\n reject(err);\n }\n });\n res.on(\"error\", reject);\n }\n )\n .on(\"error\", reject);\n req.write(\n JSON.stringify({\n ...(user.startsWith(\"user_\") ? { id: user } : { email: user }),\n quantity,\n })\n );\n req.end();\n });\n\nexport default meterRoamJSUser;\n"]}
@@ -1,32 +0,0 @@
1
- import headers from "./headers";
2
- declare const putRoamJSUser: ({ token, data, extensionId, email, dev, }: {
3
- token: string;
4
- data: {
5
- [k: string]: unknown;
6
- };
7
- extensionId?: string | undefined;
8
- email?: string | undefined;
9
- dev?: boolean | undefined;
10
- }) => Promise<{
11
- success: boolean;
12
- }>;
13
- export declare const awsPutRoamJSUser: (event: {
14
- headers: {
15
- [k: string]: string;
16
- };
17
- }, data: Record<string, unknown>) => Promise<{
18
- statusCode: number;
19
- body: string;
20
- headers: {
21
- "Access-Control-Allow-Origin": string;
22
- "Access-Control-Allow-Methods": string;
23
- };
24
- } | {
25
- statusCode: number;
26
- body: string;
27
- headers: {
28
- "Access-Control-Allow-Origin": string;
29
- "Access-Control-Allow-Methods": string;
30
- };
31
- }>;
32
- export default putRoamJSUser;
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.awsPutRoamJSUser = void 0;
4
- const tslib_1 = require("tslib");
5
- const https_1 = tslib_1.__importDefault(require("https"));
6
- const headers_1 = tslib_1.__importDefault(require("./headers"));
7
- const putRoamJSUser = ({ token, data, extensionId = process.env.ROAMJS_EXTENSION_ID || "", email = process.env.ROAMJS_EMAIL, dev = process.env.NODE_ENV === "development", }) => new Promise((resolve, reject) => {
8
- const req = https_1.default
9
- .request(`https://lambda.roamjs.com/user`, {
10
- method: "PUT",
11
- headers: Object.assign({ Authorization: `Bearer ${Buffer.from(`${email}:${process.env.ROAMJS_DEVELOPER_TOKEN}`).toString("base64")}`, "x-roamjs-token": token, "x-roamjs-extension": extensionId }, (dev
12
- ? {
13
- "x-roamjs-dev": "true",
14
- }
15
- : {})),
16
- }, (res) => {
17
- res.setEncoding("utf8");
18
- let body = "";
19
- res.on("data", (data) => {
20
- body += data;
21
- });
22
- res.on("end", () => {
23
- if (!res.statusCode)
24
- reject("Missing Status Code");
25
- else if (res.statusCode >= 200 && res.statusCode < 400)
26
- resolve(JSON.parse(body));
27
- else {
28
- const err = new Error(body);
29
- err.name = `${res.statusCode}`;
30
- reject(err);
31
- }
32
- });
33
- res.on("error", reject);
34
- })
35
- .on("error", reject);
36
- req.write(JSON.stringify(data));
37
- req.end();
38
- });
39
- const awsPutRoamJSUser = (event, data) => putRoamJSUser({
40
- token: event.headers.Authorization || event.headers.authorization || "",
41
- data,
42
- })
43
- .then((data) => ({
44
- statusCode: 200,
45
- body: JSON.stringify(data),
46
- headers: headers_1.default,
47
- }))
48
- .catch((e) => ({
49
- statusCode: Number(e.name) || 500,
50
- body: e.message,
51
- headers: headers_1.default,
52
- }));
53
- exports.awsPutRoamJSUser = awsPutRoamJSUser;
54
- exports.default = putRoamJSUser;
55
- //# sourceMappingURL=putRoamJSUser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"putRoamJSUser.js","sourceRoot":"","sources":["../../src/backend/putRoamJSUser.ts"],"names":[],"mappings":"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","sourcesContent":["import https from \"https\";\nimport headers from \"./headers\";\n\nconst putRoamJSUser = ({\n token,\n data,\n extensionId = process.env.ROAMJS_EXTENSION_ID || \"\",\n email = process.env.ROAMJS_EMAIL,\n dev = process.env.NODE_ENV === \"development\",\n}: {\n token: string;\n data: { [k: string]: unknown };\n extensionId?: string;\n email?: string;\n dev?: boolean;\n}) =>\n new Promise<{ success: boolean }>((resolve, reject) => {\n const req = https\n .request(\n `https://lambda.roamjs.com/user`,\n {\n method: \"PUT\",\n headers: {\n Authorization: `Bearer ${Buffer.from(\n `${email}:${process.env.ROAMJS_DEVELOPER_TOKEN}`\n ).toString(\"base64\")}`,\n \"x-roamjs-token\": token,\n \"x-roamjs-extension\": extensionId,\n ...(dev\n ? {\n \"x-roamjs-dev\": \"true\",\n }\n : {}),\n },\n },\n (res) => {\n res.setEncoding(\"utf8\");\n let body = \"\";\n res.on(\"data\", (data) => {\n body += data;\n });\n res.on(\"end\", () => {\n if (!res.statusCode) reject(\"Missing Status Code\");\n else if (res.statusCode >= 200 && res.statusCode < 400)\n resolve(JSON.parse(body) as { success: boolean });\n else {\n const err = new Error(body);\n err.name = `${res.statusCode}`;\n reject(err);\n }\n });\n res.on(\"error\", reject);\n }\n )\n .on(\"error\", reject);\n req.write(JSON.stringify(data));\n req.end();\n });\n\nexport const awsPutRoamJSUser = (\n event: { headers: { [k: string]: string } },\n data: Record<string, unknown>\n) =>\n putRoamJSUser({\n token: event.headers.Authorization || event.headers.authorization || \"\",\n data,\n })\n .then((data) => ({\n statusCode: 200,\n body: JSON.stringify(data),\n headers,\n }))\n .catch((e: Error) => ({\n statusCode: Number(e.name) || 500,\n body: e.message,\n headers,\n }));\n\nexport default putRoamJSUser;\n"]}
@@ -1,11 +0,0 @@
1
- /// <reference types="react" />
2
- declare type Props = {
3
- onEnter?: (token: string) => void;
4
- };
5
- declare const TokenDialog: ({ onClose, onEnter }: {
6
- onClose: () => void;
7
- } & Props) => JSX.Element;
8
- export declare const render: (props: Props) => (() => void) | undefined;
9
- export declare const addTokenDialogCommand: (props?: Props) => Promise<void>;
10
- export declare const checkRoamJSTokenWarning: () => Promise<string>;
11
- export default TokenDialog;
@@ -1,100 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkRoamJSTokenWarning = exports.addTokenDialogCommand = exports.render = void 0;
4
- const tslib_1 = require("tslib");
5
- const core_1 = require("@blueprintjs/core");
6
- const react_1 = tslib_1.__importStar(require("react"));
7
- const createOverlayRender_1 = tslib_1.__importDefault(require("../util/createOverlayRender"));
8
- const setInputSetting_1 = tslib_1.__importDefault(require("../util/setInputSetting"));
9
- const getToken_1 = tslib_1.__importDefault(require("../util/getToken"));
10
- const getPageUidByPageTitle_1 = tslib_1.__importDefault(require("../queries/getPageUidByPageTitle"));
11
- const localStorageRemove_1 = tslib_1.__importDefault(require("../util/localStorageRemove"));
12
- const localStorageSet_1 = tslib_1.__importDefault(require("../util/localStorageSet"));
13
- const createPage_1 = tslib_1.__importDefault(require("../writes/createPage"));
14
- const SimpleAlert_1 = require("../components/SimpleAlert");
15
- const getCurrentUserEmail_1 = tslib_1.__importDefault(require("../queries/getCurrentUserEmail"));
16
- const apiGet_1 = tslib_1.__importDefault(require("../util/apiGet"));
17
- const TokenDialog = ({ onClose, onEnter }) => {
18
- const [token, setToken] = (0, react_1.useState)(getToken_1.default);
19
- const [useLocal, setUseLocal] = (0, react_1.useState)(true);
20
- const dialogOnClose = (0, react_1.useCallback)(() => {
21
- onClose();
22
- onEnter === null || onEnter === void 0 ? void 0 : onEnter("");
23
- }, [onClose, onEnter]);
24
- const onSubmit = (0, react_1.useCallback)(() => {
25
- const pageUid = (0, getPageUidByPageTitle_1.default)("roam/js/roamjs");
26
- return (pageUid
27
- ? Promise.resolve(pageUid)
28
- : (0, createPage_1.default)({ title: "roam/js/roamjs", tree: [{ text: "token" }] })).then(() => {
29
- if (useLocal) {
30
- (0, localStorageSet_1.default)(`token`, token);
31
- (0, setInputSetting_1.default)({
32
- blockUid: pageUid,
33
- key: "token",
34
- value: "",
35
- });
36
- }
37
- else {
38
- (0, localStorageRemove_1.default)(`token`);
39
- (0, setInputSetting_1.default)({
40
- blockUid: pageUid,
41
- key: "token",
42
- value: token,
43
- });
44
- }
45
- onClose();
46
- onEnter === null || onEnter === void 0 ? void 0 : onEnter(token);
47
- });
48
- }, [token, useLocal, onClose]);
49
- const onKeyDown = (0, react_1.useCallback)((e) => {
50
- if (e.key === "Enter" &&
51
- !e.shiftKey &&
52
- !e.altKey &&
53
- !e.metaKey &&
54
- !e.ctrlKey &&
55
- token) {
56
- onSubmit();
57
- }
58
- }, [onSubmit, token]);
59
- return (react_1.default.createElement(react_1.default.Fragment, null,
60
- react_1.default.createElement(core_1.Dialog, { isOpen: true, title: `Add RoamJS Token`, onClose: dialogOnClose, canOutsideClickClose: true, canEscapeKeyClose: true, autoFocus: false },
61
- react_1.default.createElement("div", { className: core_1.Classes.DIALOG_BODY, onKeyDown: (e) => e.stopPropagation() },
62
- react_1.default.createElement(core_1.Label, null,
63
- "RoamJS Token",
64
- react_1.default.createElement(core_1.InputGroup, { value: token, onChange: (e) => setToken(e.target.value), onKeyDown: onKeyDown, type: "password" })),
65
- react_1.default.createElement(core_1.Checkbox, { label: "Store Locally", checked: useLocal, onChange: (e) => setUseLocal(e.target.checked) })),
66
- react_1.default.createElement("div", { className: core_1.Classes.DIALOG_FOOTER },
67
- react_1.default.createElement("div", { className: core_1.Classes.DIALOG_FOOTER_ACTIONS },
68
- react_1.default.createElement(core_1.Button, { text: "Cancel", onClick: dialogOnClose }),
69
- react_1.default.createElement(core_1.Button, { text: "Save", intent: core_1.Intent.PRIMARY, onClick: onSubmit }))))));
70
- };
71
- exports.render = (0, createOverlayRender_1.default)("token-dialog", TokenDialog);
72
- const addTokenDialogCommand = (props = {}) => window.roamAlphaAPI.ui.commandPalette.addCommand({
73
- label: "Set RoamJS Token",
74
- callback: () => (0, exports.render)(props),
75
- });
76
- exports.addTokenDialogCommand = addTokenDialogCommand;
77
- const checkRoamJSTokenWarning = () => {
78
- const token = (0, getToken_1.default)();
79
- if (!token) {
80
- return new Promise((resolve) => (0, apiGet_1.default)({
81
- path: `users?email=${encodeURIComponent((0, getCurrentUserEmail_1.default)())}`,
82
- anonymous: true,
83
- }).then((r) => {
84
- return (0, SimpleAlert_1.render)({
85
- content: `You need to ${r.exists
86
- ? ""
87
- : "sign up at [https://roamjs.com/signup](https://roamjs.com/signup) and "}add your RoamJS token to Roam to use this extension. You will only need to do this once per graph as this token will authorize you for all premium extensions.\n\nGrab your token from [https://roamjs.com/user/#Extensions](https://roamjs.com/user/#Extensions).`,
88
- onConfirm: () => (0, exports.render)({ onEnter: resolve }),
89
- onCancel: () => resolve(""),
90
- externalLink: true,
91
- });
92
- }));
93
- }
94
- else {
95
- return Promise.resolve(token);
96
- }
97
- };
98
- exports.checkRoamJSTokenWarning = checkRoamJSTokenWarning;
99
- exports.default = TokenDialog;
100
- //# sourceMappingURL=TokenDialog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TokenDialog.js","sourceRoot":"","sources":["../../src/components/TokenDialog.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Button,\n Checkbox,\n Classes,\n Dialog,\n InputGroup,\n Intent,\n Label,\n} from \"@blueprintjs/core\";\nimport React, { useCallback, useState } from \"react\";\nimport createOverlayRender from \"../util/createOverlayRender\";\nimport setInputSetting from \"../util/setInputSetting\";\nimport getToken from \"../util/getToken\";\nimport getPageUidByPageTitle from \"../queries/getPageUidByPageTitle\";\nimport localStorageRemove from \"../util/localStorageRemove\";\nimport localStorageSet from \"../util/localStorageSet\";\nimport createPage from \"../writes/createPage\";\nimport { render as renderSimpleAlert } from \"../components/SimpleAlert\";\nimport getCurrentUserEmail from \"../queries/getCurrentUserEmail\";\nimport apiGet from \"../util/apiGet\";\n\ntype Props = { onEnter?: (token: string) => void };\n\nconst TokenDialog = ({ onClose, onEnter }: { onClose: () => void } & Props) => {\n const [token, setToken] = useState(getToken);\n const [useLocal, setUseLocal] = useState(true);\n const dialogOnClose = useCallback(() => {\n onClose();\n onEnter?.(\"\");\n }, [onClose, onEnter]);\n const onSubmit = useCallback(() => {\n const pageUid = getPageUidByPageTitle(\"roam/js/roamjs\");\n return (\n pageUid\n ? Promise.resolve(pageUid)\n : createPage({ title: \"roam/js/roamjs\", tree: [{ text: \"token\" }] })\n ).then(() => {\n if (useLocal) {\n localStorageSet(`token`, token);\n setInputSetting({\n blockUid: pageUid,\n key: \"token\",\n value: \"\",\n });\n } else {\n localStorageRemove(`token`);\n setInputSetting({\n blockUid: pageUid,\n key: \"token\",\n value: token,\n });\n }\n onClose();\n onEnter?.(token);\n });\n }, [token, useLocal, onClose]);\n const onKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (\n e.key === \"Enter\" &&\n !e.shiftKey &&\n !e.altKey &&\n !e.metaKey &&\n !e.ctrlKey &&\n token\n ) {\n onSubmit();\n }\n },\n [onSubmit, token]\n );\n return (\n <>\n <Dialog\n isOpen={true}\n title={`Add RoamJS Token`}\n onClose={dialogOnClose}\n canOutsideClickClose\n canEscapeKeyClose\n autoFocus={false}\n >\n <div\n className={Classes.DIALOG_BODY}\n onKeyDown={(e) => e.stopPropagation()}\n >\n <Label>\n RoamJS Token\n <InputGroup\n value={token}\n onChange={(e) => setToken(e.target.value)}\n onKeyDown={onKeyDown}\n type=\"password\"\n />\n </Label>\n <Checkbox\n label={\"Store Locally\"}\n checked={useLocal}\n onChange={(e) =>\n setUseLocal((e.target as HTMLInputElement).checked)\n }\n />\n </div>\n <div className={Classes.DIALOG_FOOTER}>\n <div className={Classes.DIALOG_FOOTER_ACTIONS}>\n <Button text={\"Cancel\"} onClick={dialogOnClose} />\n <Button text={\"Save\"} intent={Intent.PRIMARY} onClick={onSubmit} />\n </div>\n </div>\n </Dialog>\n </>\n );\n};\n\nexport const render = createOverlayRender<Props>(\"token-dialog\", TokenDialog);\n\nexport const addTokenDialogCommand = (props: Props = {}) =>\n window.roamAlphaAPI.ui.commandPalette.addCommand({\n label: \"Set RoamJS Token\",\n callback: () => render(props),\n });\n\nexport const checkRoamJSTokenWarning = () => {\n const token = getToken();\n if (!token) {\n return new Promise<string>((resolve) =>\n apiGet<{ exists: boolean }>({\n path: `users?email=${encodeURIComponent(getCurrentUserEmail())}`,\n anonymous: true,\n }).then((r) => {\n return renderSimpleAlert({\n content: `You need to ${\n r.exists\n ? \"\"\n : \"sign up at [https://roamjs.com/signup](https://roamjs.com/signup) and \"\n }add your RoamJS token to Roam to use this extension. You will only need to do this once per graph as this token will authorize you for all premium extensions.\\n\\nGrab your token from [https://roamjs.com/user/#Extensions](https://roamjs.com/user/#Extensions).`,\n onConfirm: () => render({ onEnter: resolve }),\n onCancel: () => resolve(\"\"),\n externalLink: true,\n });\n })\n );\n } else {\n return Promise.resolve(token);\n }\n};\n\nexport default TokenDialog;\n"]}
@@ -1,2 +0,0 @@
1
- declare const useRoamJSTokenWarning: () => void;
2
- export default useRoamJSTokenWarning;
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const react_1 = require("react");
4
- const TokenDialog_1 = require("../components/TokenDialog");
5
- const useRoamJSTokenWarning = () => {
6
- (0, react_1.useEffect)(() => {
7
- (0, TokenDialog_1.checkRoamJSTokenWarning)();
8
- (0, TokenDialog_1.addTokenDialogCommand)();
9
- }, []);
10
- };
11
- exports.default = useRoamJSTokenWarning;
12
- //# sourceMappingURL=useRoamJSTokenWarning.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useRoamJSTokenWarning.js","sourceRoot":"","sources":["../../src/hooks/useRoamJSTokenWarning.tsx"],"names":[],"mappings":";;AAAA,iCAAkC;AAClC,2DAGmC;AAEnC,MAAM,qBAAqB,GAAG,GAAS,EAAE;IACvC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAA,qCAAuB,GAAE,CAAC;QAC1B,IAAA,mCAAqB,GAAE,CAAC;IAC1B,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC,CAAC;AAEF,kBAAe,qBAAqB,CAAC","sourcesContent":["import { useEffect } from \"react\";\nimport {\n addTokenDialogCommand,\n checkRoamJSTokenWarning,\n} from \"../components/TokenDialog\";\n\nconst useRoamJSTokenWarning = (): void => {\n useEffect(() => {\n checkRoamJSTokenWarning();\n addTokenDialogCommand();\n }, []);\n};\n\nexport default useRoamJSTokenWarning;\n"]}