roamjs-components 0.81.0 → 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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "roamjs-components",
3
3
  "description": "Expansive toolset, utilities, & components for developing RoamJS extensions.",
4
- "version": "0.81.0",
4
+ "version": "0.82.0",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
7
7
  "scripts": {
@@ -20,7 +20,6 @@
20
20
  "@blueprintjs/core": "3.50.4",
21
21
  "@blueprintjs/datetime": "3.23.14",
22
22
  "@blueprintjs/select": "3.18.6",
23
- "@samepage/scripts": "^0.74.2",
24
23
  "@types/crypto-js": "4.1.1",
25
24
  "@types/cytoscape": "^3.19.9",
26
25
  "@types/file-saver": "2.0.5",
@@ -47,7 +46,7 @@
47
46
  "use-sync-external-store": "^1.2.0"
48
47
  },
49
48
  "dependencies": {
50
- "@testing-library/react": "^12.1.5",
49
+ "@samepage/scripts": "^0.74.2",
51
50
  "aws-sdk-plus": "^0.5.3",
52
51
  "color": "^4.0.1",
53
52
  "date-fns": "^2.27.0",
@@ -78,6 +77,12 @@
78
77
  "bin": {
79
78
  "roamjs": "./scripts/index.js"
80
79
  },
80
+ "overrides": {
81
+ "@testing-library/react": {
82
+ "react": "17.0.2",
83
+ "react-dom": "17.0.2"
84
+ }
85
+ },
81
86
  "samepage": {
82
87
  "external": [
83
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"]}