@crimson-education/replit-sdk 1.0.2-beta-2 → 1.0.2-beta-4
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/Readme.md +1 -1
- package/lib/components/external-link.d.ts +2 -1
- package/lib/components/external-link.d.ts.map +1 -1
- package/lib/components/external-link.js +14 -2
- package/lib/components/external-link.js.map +1 -1
- package/lib/utils/queryClient.d.ts.map +1 -1
- package/lib/utils/queryClient.js +11 -1
- package/lib/utils/queryClient.js.map +1 -1
- package/package.json +1 -1
package/Readme.md
CHANGED
|
@@ -40,7 +40,7 @@ Prompts from replit:
|
|
|
40
40
|
|
|
41
41
|
````
|
|
42
42
|
we are going to embed the app on a iframe, so now you need to do all things one by one listed here:
|
|
43
|
-
1. install and save package @crimson-education/replit-sdk@1.0.2-beta
|
|
43
|
+
1. install and save package @crimson-education/replit-sdk@1.0.2-beta-3
|
|
44
44
|
2. call `useUrlParams` on the Root app component, like ```function App() {
|
|
45
45
|
useUrlParams();
|
|
46
46
|
return (
|
|
@@ -3,7 +3,8 @@ interface ExternalLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement
|
|
|
3
3
|
href: string;
|
|
4
4
|
replit?: boolean;
|
|
5
5
|
children: React.ReactNode;
|
|
6
|
+
eventName?: string;
|
|
6
7
|
}
|
|
7
|
-
export default function ExternalLink({ href, replit, children, ...props }: ExternalLinkProps): React.JSX.Element;
|
|
8
|
+
export default function ExternalLink({ href, replit, children, eventName, onClick, ...props }: ExternalLinkProps): React.JSX.Element;
|
|
8
9
|
export {};
|
|
9
10
|
//# sourceMappingURL=external-link.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-link.d.ts","sourceRoot":"","sources":["../../src/components/external-link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"external-link.d.ts","sourceRoot":"","sources":["../../src/components/external-link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,iBAAkB,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,SAAiC,EACjC,OAAO,EACP,GAAG,KAAK,EACT,EAAE,iBAAiB,qBAqBnB"}
|
|
@@ -6,10 +6,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.default = ExternalLink;
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
8
|
const use_url_params_1 = require("../hooks/use-url-params");
|
|
9
|
-
|
|
9
|
+
const datadog_1 = require("../utils/datadog");
|
|
10
|
+
function ExternalLink({ href, replit, children, eventName = 'external_link_click', onClick, ...props }) {
|
|
10
11
|
const isReplit = replit !== null && replit !== void 0 ? replit : (href.endsWith('replit.app') || href.includes('replit.com/t'));
|
|
11
12
|
const parentDomain = (0, use_url_params_1.getStoredParam)('parentDomain') || '';
|
|
12
13
|
const finalHref = isReplit && parentDomain ? parentDomain + '/replit/t?redirect=' + encodeURIComponent(href) : href;
|
|
13
|
-
|
|
14
|
+
const handleClick = (event) => {
|
|
15
|
+
(0, datadog_1.trackEvent)({
|
|
16
|
+
href,
|
|
17
|
+
url: finalHref,
|
|
18
|
+
text: typeof children === 'string' ? children : 'React Component',
|
|
19
|
+
timestamp: new Date().toISOString(),
|
|
20
|
+
});
|
|
21
|
+
if (onClick) {
|
|
22
|
+
onClick(event);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
return (react_1.default.createElement("a", { href: finalHref, target: "_blank", onClick: handleClick, rel: "noopener noreferrer", ...props }, children));
|
|
14
26
|
}
|
|
15
27
|
//# sourceMappingURL=external-link.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-link.js","sourceRoot":"","sources":["../../src/components/external-link.tsx"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"external-link.js","sourceRoot":"","sources":["../../src/components/external-link.tsx"],"names":[],"mappings":";;;;;AAWA,+BA4BC;AAvCD,kDAA0B;AAC1B,4DAAyD;AACzD,8CAA8C;AAS9C,SAAwB,YAAY,CAAC,EACnC,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,SAAS,GAAG,qBAAqB,EACjC,OAAO,EACP,GAAG,KAAK,EACU;IAClB,MAAM,QAAQ,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;IAC1F,MAAM,YAAY,GAAG,IAAA,+BAAc,EAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,SAAS,GAAG,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,YAAY,GAAG,qBAAqB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpH,MAAM,WAAW,GAAG,CAAC,KAA0C,EAAE,EAAE;QACjE,IAAA,oBAAU,EAAC;YACT,IAAI;YACJ,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB;YACjE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QAEH,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,CAAC;IACF,OAAO,CACL,qCAAG,IAAI,EAAE,SAAS,EAAE,MAAM,EAAC,QAAQ,EAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAC,qBAAqB,KAAK,KAAK,IAC1F,QAAQ,CACP,CACL,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryClient.d.ts","sourceRoot":"","sources":["../../src/utils/queryClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"queryClient.d.ts","sourceRoot":"","sources":["../../src/utils/queryClient.ts"],"names":[],"mappings":"AAGA,wBAAsB,eAAe,CAAC,GAAG,EAAE,QAAQ,iBAKlD;AAYD,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAgBpH"}
|
package/lib/utils/queryClient.js
CHANGED
|
@@ -3,18 +3,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.throwIfResNotOk = throwIfResNotOk;
|
|
4
4
|
exports.apiRequest = apiRequest;
|
|
5
5
|
const use_url_params_1 = require("../hooks/use-url-params");
|
|
6
|
+
const datadog_1 = require("./datadog");
|
|
6
7
|
async function throwIfResNotOk(res) {
|
|
7
8
|
if (!res.ok) {
|
|
8
9
|
const text = (await res.text()) || res.statusText;
|
|
9
10
|
throw new Error(`${res.status}: ${text}`);
|
|
10
11
|
}
|
|
11
12
|
}
|
|
13
|
+
function extractOperationName(gqlString) {
|
|
14
|
+
const regex = /(query|mutation|subscription)\s+([a-zA-Z0-9_]+)/;
|
|
15
|
+
const match = gqlString.match(regex);
|
|
16
|
+
if (match && match[0]) {
|
|
17
|
+
return match[0].replace(' ', ':');
|
|
18
|
+
}
|
|
19
|
+
return '';
|
|
20
|
+
}
|
|
12
21
|
async function apiRequest(query, variables, data) {
|
|
13
22
|
const source = (data === null || data === void 0 ? void 0 : data.source) || 'capp';
|
|
14
|
-
const operation = data === null || data === void 0 ? void 0 : data.operation;
|
|
23
|
+
const operation = (data === null || data === void 0 ? void 0 : data.operation) || extractOperationName(query);
|
|
15
24
|
const graphqlEndpoint = (data === null || data === void 0 ? void 0 : data.endpoint) || (0, use_url_params_1.getStoredParam)(`${source}Endpoint`);
|
|
16
25
|
const env = (0, use_url_params_1.getStoredEnv)();
|
|
17
26
|
const token = (0, use_url_params_1.getStoredToken)();
|
|
27
|
+
(0, datadog_1.trackEvent)({ query, variables, data, operation });
|
|
18
28
|
const res = await fetch(`/api/function${operation ? `/${operation}` : ''}`, {
|
|
19
29
|
method: 'POST',
|
|
20
30
|
headers: { 'Content-Type': 'application/json' },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryClient.js","sourceRoot":"","sources":["../../src/utils/queryClient.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"queryClient.js","sourceRoot":"","sources":["../../src/utils/queryClient.ts"],"names":[],"mappings":";;AAGA,0CAKC;AAYD,gCAgBC;AApCD,4DAAuF;AACvF,uCAAuC;AAEhC,KAAK,UAAU,eAAe,CAAC,GAAa;IACjD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,SAAiB;IAC7C,MAAM,KAAK,GAAG,iDAAiD,CAAC;IAChE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAErC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,KAAa,EAAE,SAAc,EAAE,IAAiC;IAC/F,MAAM,MAAM,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,KAAI,MAAM,CAAC;IACtC,MAAM,SAAS,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,KAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACjE,MAAM,eAAe,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,KAAI,IAAA,+BAAc,EAAC,GAAG,MAAM,UAAU,CAAC,CAAC;IAC9E,MAAM,GAAG,GAAG,IAAA,6BAAY,GAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAA,+BAAc,GAAE,CAAC;IAC/B,IAAA,oBAAU,EAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,gBAAgB,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;QAC1E,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QACxF,WAAW,EAAE,SAAS;KACvB,CAAC,CAAC;IAEH,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC;AACb,CAAC"}
|