@immediately-run/sdk 0.1.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/LICENSE +21 -0
- package/README.md +36 -0
- package/dist/MDXProvider.cjs +58 -0
- package/dist/MDXProvider.cjs.map +1 -0
- package/dist/MDXProvider.d.cts +6 -0
- package/dist/MDXProvider.d.ts +6 -0
- package/dist/MDXProvider.js +33 -0
- package/dist/MDXProvider.js.map +1 -0
- package/dist/RoutingSpec.cjs +17 -0
- package/dist/RoutingSpec.cjs.map +1 -0
- package/dist/RoutingSpec.d.cts +12 -0
- package/dist/RoutingSpec.d.ts +12 -0
- package/dist/RoutingSpec.js +1 -0
- package/dist/RoutingSpec.js.map +1 -0
- package/dist/TinkerableContext.cjs +30 -0
- package/dist/TinkerableContext.cjs.map +1 -0
- package/dist/TinkerableContext.d.cts +27 -0
- package/dist/TinkerableContext.d.ts +27 -0
- package/dist/TinkerableContext.js +6 -0
- package/dist/TinkerableContext.js.map +1 -0
- package/dist/boot.cjs +119 -0
- package/dist/boot.cjs.map +1 -0
- package/dist/boot.d.cts +15 -0
- package/dist/boot.d.ts +15 -0
- package/dist/boot.js +93 -0
- package/dist/boot.js.map +1 -0
- package/dist/components/FileRouter.cjs +53 -0
- package/dist/components/FileRouter.cjs.map +1 -0
- package/dist/components/FileRouter.d.cts +5 -0
- package/dist/components/FileRouter.d.ts +5 -0
- package/dist/components/FileRouter.js +29 -0
- package/dist/components/FileRouter.js.map +1 -0
- package/dist/components/Include.cjs +57 -0
- package/dist/components/Include.cjs.map +1 -0
- package/dist/components/Include.d.cts +23 -0
- package/dist/components/Include.d.ts +23 -0
- package/dist/components/Include.js +31 -0
- package/dist/components/Include.js.map +1 -0
- package/dist/components/MDXComponents.cjs +75 -0
- package/dist/components/MDXComponents.cjs.map +1 -0
- package/dist/components/MDXComponents.d.cts +10 -0
- package/dist/components/MDXComponents.d.ts +10 -0
- package/dist/components/MDXComponents.js +49 -0
- package/dist/components/MDXComponents.js.map +1 -0
- package/dist/components/MainContent.cjs +74 -0
- package/dist/components/MainContent.cjs.map +1 -0
- package/dist/components/MainContent.d.cts +16 -0
- package/dist/components/MainContent.d.ts +16 -0
- package/dist/components/MainContent.js +48 -0
- package/dist/components/MainContent.js.map +1 -0
- package/dist/components/defaults.cjs +36 -0
- package/dist/components/defaults.cjs.map +1 -0
- package/dist/components/defaults.d.cts +7 -0
- package/dist/components/defaults.d.ts +7 -0
- package/dist/components/defaults.js +11 -0
- package/dist/components/defaults.js.map +1 -0
- package/dist/components/errors.cjs +38 -0
- package/dist/components/errors.cjs.map +1 -0
- package/dist/components/errors.d.cts +5 -0
- package/dist/components/errors.d.ts +5 -0
- package/dist/components/errors.js +14 -0
- package/dist/components/errors.js.map +1 -0
- package/dist/contextUtils.cjs +60 -0
- package/dist/contextUtils.cjs.map +1 -0
- package/dist/contextUtils.d.cts +10 -0
- package/dist/contextUtils.d.ts +10 -0
- package/dist/contextUtils.js +34 -0
- package/dist/contextUtils.js.map +1 -0
- package/dist/hooks.cjs +75 -0
- package/dist/hooks.cjs.map +1 -0
- package/dist/hooks.d.cts +6 -0
- package/dist/hooks.d.ts +6 -0
- package/dist/hooks.js +50 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.cjs +35 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +13 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/moduleCache.cjs +66 -0
- package/dist/moduleCache.cjs.map +1 -0
- package/dist/moduleCache.d.cts +20 -0
- package/dist/moduleCache.d.ts +20 -0
- package/dist/moduleCache.js +40 -0
- package/dist/moduleCache.js.map +1 -0
- package/dist/pathUtils.cjs +63 -0
- package/dist/pathUtils.cjs.map +1 -0
- package/dist/pathUtils.d.cts +4 -0
- package/dist/pathUtils.d.ts +4 -0
- package/dist/pathUtils.js +38 -0
- package/dist/pathUtils.js.map +1 -0
- package/dist/routing.cjs +84 -0
- package/dist/routing.cjs.map +1 -0
- package/dist/routing.d.cts +15 -0
- package/dist/routing.d.ts +15 -0
- package/dist/routing.js +57 -0
- package/dist/routing.js.map +1 -0
- package/dist/sandboxTypes.cjs +17 -0
- package/dist/sandboxTypes.cjs.map +1 -0
- package/dist/sandboxTypes.d.cts +24 -0
- package/dist/sandboxTypes.d.ts +24 -0
- package/dist/sandboxTypes.js +1 -0
- package/dist/sandboxTypes.js.map +1 -0
- package/dist/sandboxUtils.cjs +46 -0
- package/dist/sandboxUtils.cjs.map +1 -0
- package/dist/sandboxUtils.d.cts +5 -0
- package/dist/sandboxUtils.d.ts +5 -0
- package/dist/sandboxUtils.js +20 -0
- package/dist/sandboxUtils.js.map +1 -0
- package/dist/urlUtils.cjs +159 -0
- package/dist/urlUtils.cjs.map +1 -0
- package/dist/urlUtils.d.cts +24 -0
- package/dist/urlUtils.d.ts +24 -0
- package/dist/urlUtils.js +124 -0
- package/dist/urlUtils.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var urlUtils_exports = {};
|
|
20
|
+
__export(urlUtils_exports, {
|
|
21
|
+
FILES_PREFIX: () => FILES_PREFIX,
|
|
22
|
+
constructOuterUrl: () => constructOuterUrl,
|
|
23
|
+
constructUrl: () => constructUrl,
|
|
24
|
+
getOuterHostname: () => getOuterHostname,
|
|
25
|
+
getSearchParams: () => getSearchParams,
|
|
26
|
+
isAbsolutePath: () => isAbsolutePath,
|
|
27
|
+
isInternalHref: () => isInternalHref,
|
|
28
|
+
maybeParseUrl: () => maybeParseUrl,
|
|
29
|
+
parseHref: () => parseHref,
|
|
30
|
+
parsePath: () => parsePath,
|
|
31
|
+
parseTarget: () => parseTarget,
|
|
32
|
+
repositoryPrefixURL: () => repositoryPrefixURL
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(urlUtils_exports);
|
|
35
|
+
var import_pathUtils = require("./pathUtils");
|
|
36
|
+
const FILES_PREFIX = "/files";
|
|
37
|
+
const getOuterHostname = (outerHref) => {
|
|
38
|
+
const url = new URL(outerHref);
|
|
39
|
+
return `${url.protocol}//${url.hostname}`;
|
|
40
|
+
};
|
|
41
|
+
const getSearchParams = (search) => Object.fromEntries(
|
|
42
|
+
[...new URLSearchParams(search ?? window.location.search).entries()]
|
|
43
|
+
);
|
|
44
|
+
const parseTarget = (target, navigation) => {
|
|
45
|
+
const newNavigation = { ...navigation };
|
|
46
|
+
let [prehash, hash] = target.split("#");
|
|
47
|
+
if (prehash) {
|
|
48
|
+
let [path, search] = prehash.split("?");
|
|
49
|
+
if (path) {
|
|
50
|
+
newNavigation.sandboxPath = path;
|
|
51
|
+
}
|
|
52
|
+
newNavigation.search = search ? search : "";
|
|
53
|
+
}
|
|
54
|
+
newNavigation.hash = hash ? hash : "";
|
|
55
|
+
return newNavigation;
|
|
56
|
+
};
|
|
57
|
+
const maybeParseUrl = (str) => {
|
|
58
|
+
try {
|
|
59
|
+
return new URL(str);
|
|
60
|
+
} catch (_) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
const isAbsolutePath = (sandboxPath) => sandboxPath.startsWith("/");
|
|
65
|
+
const repositoryPrefixURL = (outerHref, navigationState) => constructUrl(outerHref, {
|
|
66
|
+
...navigationState,
|
|
67
|
+
sandboxPath: ""
|
|
68
|
+
});
|
|
69
|
+
const constructOuterUrl = (previousOuterHref, sandboxTarget, navigationState, addFilesPrefix = true) => {
|
|
70
|
+
if (isAbsolutePath(sandboxTarget)) {
|
|
71
|
+
return constructUrl(
|
|
72
|
+
previousOuterHref,
|
|
73
|
+
{
|
|
74
|
+
...navigationState,
|
|
75
|
+
sandboxPath: addFilesPrefix ? (0, import_pathUtils.joinPaths)(FILES_PREFIX, sandboxTarget) : sandboxTarget
|
|
76
|
+
}
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
return new URL(
|
|
80
|
+
sandboxTarget,
|
|
81
|
+
constructUrl(
|
|
82
|
+
previousOuterHref,
|
|
83
|
+
navigationState
|
|
84
|
+
)
|
|
85
|
+
).toString();
|
|
86
|
+
};
|
|
87
|
+
const isInternalHref = (outerHref, target, navigationState) => {
|
|
88
|
+
const parsedUrl = maybeParseUrl(target);
|
|
89
|
+
if (parsedUrl) {
|
|
90
|
+
return target.startsWith(repositoryPrefixURL(outerHref, navigationState));
|
|
91
|
+
}
|
|
92
|
+
return true;
|
|
93
|
+
};
|
|
94
|
+
const PATH_SEGMENTS = [
|
|
95
|
+
{ name: "mode", pattern: "\\w+" },
|
|
96
|
+
{ name: "provider", pattern: "[a-zA-Z0-9-_]+" },
|
|
97
|
+
{ name: "namespace", pattern: "[a-zA-Z0-9-_]+" },
|
|
98
|
+
{ name: "repository", pattern: "[a-zA-Z0-9-_]+" },
|
|
99
|
+
{ name: "ref", pattern: "[a-zA-Z0-9-_]+" },
|
|
100
|
+
{ name: "sandboxPath", pattern: ".*", transform: (s) => `/${s}` }
|
|
101
|
+
];
|
|
102
|
+
const OUTER_HREF_REGEXP = new RegExp("^" + PATH_SEGMENTS.map(({ name, pattern }) => `/(?<${name}>${pattern})`).join("") + "$");
|
|
103
|
+
const parsePath = (pathname) => {
|
|
104
|
+
const matchResults = pathname.match(OUTER_HREF_REGEXP)?.groups ?? {};
|
|
105
|
+
return PATH_SEGMENTS.reduce((acc, { name, transform }) => {
|
|
106
|
+
let value = void 0;
|
|
107
|
+
if (name in matchResults) {
|
|
108
|
+
value = matchResults[name];
|
|
109
|
+
}
|
|
110
|
+
if (!value) {
|
|
111
|
+
value = "";
|
|
112
|
+
}
|
|
113
|
+
if (typeof value === "string") {
|
|
114
|
+
acc[name] = transform ? transform(value) : value;
|
|
115
|
+
}
|
|
116
|
+
return acc;
|
|
117
|
+
}, {});
|
|
118
|
+
};
|
|
119
|
+
const parseHref = (href) => {
|
|
120
|
+
const parsedUrl = new URL(href);
|
|
121
|
+
const pathnameState = parsePath(parsedUrl.pathname);
|
|
122
|
+
return {
|
|
123
|
+
...pathnameState,
|
|
124
|
+
search: parsedUrl.search.substring(1),
|
|
125
|
+
hash: parsedUrl.hash.substring(1)
|
|
126
|
+
};
|
|
127
|
+
};
|
|
128
|
+
const stripSlashPrefix = (s) => s.startsWith("/") ? s.substring(1) : s;
|
|
129
|
+
const constructUrl = (outerHref, navigationState) => {
|
|
130
|
+
const path = PATH_SEGMENTS.map(({ name }) => {
|
|
131
|
+
let value = navigationState[name];
|
|
132
|
+
return stripSlashPrefix(value ?? "");
|
|
133
|
+
}).join("/");
|
|
134
|
+
const host = getOuterHostname(outerHref);
|
|
135
|
+
let url = `${host}/${path}`;
|
|
136
|
+
if (navigationState.search) {
|
|
137
|
+
url += "?" + navigationState.search;
|
|
138
|
+
}
|
|
139
|
+
if (navigationState.hash) {
|
|
140
|
+
url += "#" + navigationState.hash;
|
|
141
|
+
}
|
|
142
|
+
return url;
|
|
143
|
+
};
|
|
144
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
145
|
+
0 && (module.exports = {
|
|
146
|
+
FILES_PREFIX,
|
|
147
|
+
constructOuterUrl,
|
|
148
|
+
constructUrl,
|
|
149
|
+
getOuterHostname,
|
|
150
|
+
getSearchParams,
|
|
151
|
+
isAbsolutePath,
|
|
152
|
+
isInternalHref,
|
|
153
|
+
maybeParseUrl,
|
|
154
|
+
parseHref,
|
|
155
|
+
parsePath,
|
|
156
|
+
parseTarget,
|
|
157
|
+
repositoryPrefixURL
|
|
158
|
+
});
|
|
159
|
+
//# sourceMappingURL=urlUtils.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/urlUtils.ts"],"sourcesContent":["import { joinPaths } from \"./pathUtils\";\nimport { NavigationState, PathState } from \"./TinkerableContext\";\n\nexport const FILES_PREFIX = '/files';\n\nexport const getOuterHostname = (outerHref:string) => {\n const url = new URL(outerHref);\n return `${url.protocol}//${url.hostname}`;\n}\n\nexport const getSearchParams = (search?: string): Record<string, string> => Object.fromEntries(\n [...(new URLSearchParams(search ?? window.location.search).entries())]);\n\n\nexport const parseTarget = (target: string, navigation: NavigationState): NavigationState => {\n const newNavigation = { ...navigation };\n let [prehash, hash] = target.split(\"#\")\n if (prehash) {\n let [path, search] = prehash.split(\"?\")\n if (path) {\n newNavigation.sandboxPath = path\n }\n newNavigation.search = search ? search : '';\n }\n newNavigation.hash = hash ? hash : '';\n return newNavigation\n}\n\n\nexport const maybeParseUrl = (str: string): URL | null => {\n try {\n return new URL(str);\n } catch (_) {\n return null;\n }\n}\n\nexport const isAbsolutePath = (sandboxPath: string) => sandboxPath.startsWith('/');\n\nexport const repositoryPrefixURL = (outerHref:string, navigationState: NavigationState) => constructUrl(outerHref, {\n ...navigationState,\n sandboxPath: ''\n });\n\nexport const constructOuterUrl = (previousOuterHref:string, sandboxTarget:string, navigationState: NavigationState, addFilesPrefix=true):string => {\n if (isAbsolutePath(sandboxTarget)) {\n return constructUrl(\n previousOuterHref,\n {\n ...navigationState,\n sandboxPath: addFilesPrefix ? joinPaths(FILES_PREFIX, sandboxTarget) : sandboxTarget\n })\n }\n return (\n new URL(\n sandboxTarget,\n constructUrl(\n previousOuterHref,\n navigationState\n )\n )\n ).toString();\n}\n\nexport const isInternalHref = (outerHref:string, target: string, navigationState: NavigationState) => {\n const parsedUrl = maybeParseUrl(target);\n if (parsedUrl) {\n return target.startsWith(repositoryPrefixURL(outerHref, navigationState));\n }\n // if target is not a valid URL, then assume it's relative.\n return true;\n}\n\nexport type PathSegment = {\n name: string,\n pattern: string,\n transform?: (pathSegment: string) => string\n}\n\nconst PATH_SEGMENTS: PathSegment[] = [\n { name: 'mode', pattern: '\\\\w+' },\n { name: 'provider', pattern: '[a-zA-Z0-9-_]+' },\n { name: 'namespace', pattern: '[a-zA-Z0-9-_]+' },\n { name: 'repository', pattern: '[a-zA-Z0-9-_]+' },\n { name: 'ref', pattern: '[a-zA-Z0-9-_]+' },\n { name: 'sandboxPath', pattern: '.*', transform: s => `/${s}` }\n];\n\nconst OUTER_HREF_REGEXP = new RegExp('^' + PATH_SEGMENTS.map(({ name, pattern }) => `\\/(?<${name}>${pattern})`).join('') + \"$\");\n\n\nexport const parsePath = (pathname: string): PathState => {\n const matchResults = pathname.match(OUTER_HREF_REGEXP)?.groups ?? {};\n return PATH_SEGMENTS.reduce((acc: Partial<PathState>, { name, transform }: PathSegment) => {\n let value: string | undefined = undefined;\n if (name in matchResults) {\n value = matchResults[name];\n }\n if (!value) {\n // fall back to default value if var not present in\n value = '';\n }\n if (typeof value === 'string') {\n acc[name] = transform ? transform(value) : value;\n }\n return acc;\n }, {}) as PathState;\n}\n\nexport const parseHref = (href: string): NavigationState => {\n const parsedUrl = new URL(href);\n const pathnameState = parsePath(parsedUrl.pathname);\n return {\n ...pathnameState,\n search: parsedUrl.search.substring(1),\n hash: parsedUrl.hash.substring(1),\n } as NavigationState\n}\n\nconst stripSlashPrefix = (s: string): string => s.startsWith('/') ? s.substring(1) : s;\n\nexport const constructUrl = (outerHref:string, navigationState: NavigationState): string => {\n const path = PATH_SEGMENTS.map(({ name }) => {\n let value = navigationState[name];\n return stripSlashPrefix(value ?? '');\n }).join('/');\n const host = getOuterHostname(outerHref);\n let url = `${host}/${path}`\n if (navigationState.search) {\n url += '?' + navigationState.search\n }\n if (navigationState.hash) {\n url += '#' + navigationState.hash\n }\n return url;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { NavigationState, PathState } from './TinkerableContext.cjs';
|
|
2
|
+
import 'react';
|
|
3
|
+
import './RoutingSpec.cjs';
|
|
4
|
+
import './sandboxTypes.cjs';
|
|
5
|
+
|
|
6
|
+
declare const FILES_PREFIX = "/files";
|
|
7
|
+
declare const getOuterHostname: (outerHref: string) => string;
|
|
8
|
+
declare const getSearchParams: (search?: string) => Record<string, string>;
|
|
9
|
+
declare const parseTarget: (target: string, navigation: NavigationState) => NavigationState;
|
|
10
|
+
declare const maybeParseUrl: (str: string) => URL | null;
|
|
11
|
+
declare const isAbsolutePath: (sandboxPath: string) => boolean;
|
|
12
|
+
declare const repositoryPrefixURL: (outerHref: string, navigationState: NavigationState) => string;
|
|
13
|
+
declare const constructOuterUrl: (previousOuterHref: string, sandboxTarget: string, navigationState: NavigationState, addFilesPrefix?: boolean) => string;
|
|
14
|
+
declare const isInternalHref: (outerHref: string, target: string, navigationState: NavigationState) => boolean;
|
|
15
|
+
type PathSegment = {
|
|
16
|
+
name: string;
|
|
17
|
+
pattern: string;
|
|
18
|
+
transform?: (pathSegment: string) => string;
|
|
19
|
+
};
|
|
20
|
+
declare const parsePath: (pathname: string) => PathState;
|
|
21
|
+
declare const parseHref: (href: string) => NavigationState;
|
|
22
|
+
declare const constructUrl: (outerHref: string, navigationState: NavigationState) => string;
|
|
23
|
+
|
|
24
|
+
export { FILES_PREFIX, type PathSegment, constructOuterUrl, constructUrl, getOuterHostname, getSearchParams, isAbsolutePath, isInternalHref, maybeParseUrl, parseHref, parsePath, parseTarget, repositoryPrefixURL };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { NavigationState, PathState } from './TinkerableContext.js';
|
|
2
|
+
import 'react';
|
|
3
|
+
import './RoutingSpec.js';
|
|
4
|
+
import './sandboxTypes.js';
|
|
5
|
+
|
|
6
|
+
declare const FILES_PREFIX = "/files";
|
|
7
|
+
declare const getOuterHostname: (outerHref: string) => string;
|
|
8
|
+
declare const getSearchParams: (search?: string) => Record<string, string>;
|
|
9
|
+
declare const parseTarget: (target: string, navigation: NavigationState) => NavigationState;
|
|
10
|
+
declare const maybeParseUrl: (str: string) => URL | null;
|
|
11
|
+
declare const isAbsolutePath: (sandboxPath: string) => boolean;
|
|
12
|
+
declare const repositoryPrefixURL: (outerHref: string, navigationState: NavigationState) => string;
|
|
13
|
+
declare const constructOuterUrl: (previousOuterHref: string, sandboxTarget: string, navigationState: NavigationState, addFilesPrefix?: boolean) => string;
|
|
14
|
+
declare const isInternalHref: (outerHref: string, target: string, navigationState: NavigationState) => boolean;
|
|
15
|
+
type PathSegment = {
|
|
16
|
+
name: string;
|
|
17
|
+
pattern: string;
|
|
18
|
+
transform?: (pathSegment: string) => string;
|
|
19
|
+
};
|
|
20
|
+
declare const parsePath: (pathname: string) => PathState;
|
|
21
|
+
declare const parseHref: (href: string) => NavigationState;
|
|
22
|
+
declare const constructUrl: (outerHref: string, navigationState: NavigationState) => string;
|
|
23
|
+
|
|
24
|
+
export { FILES_PREFIX, type PathSegment, constructOuterUrl, constructUrl, getOuterHostname, getSearchParams, isAbsolutePath, isInternalHref, maybeParseUrl, parseHref, parsePath, parseTarget, repositoryPrefixURL };
|
package/dist/urlUtils.js
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { joinPaths } from "./pathUtils";
|
|
2
|
+
const FILES_PREFIX = "/files";
|
|
3
|
+
const getOuterHostname = (outerHref) => {
|
|
4
|
+
const url = new URL(outerHref);
|
|
5
|
+
return `${url.protocol}//${url.hostname}`;
|
|
6
|
+
};
|
|
7
|
+
const getSearchParams = (search) => Object.fromEntries(
|
|
8
|
+
[...new URLSearchParams(search ?? window.location.search).entries()]
|
|
9
|
+
);
|
|
10
|
+
const parseTarget = (target, navigation) => {
|
|
11
|
+
const newNavigation = { ...navigation };
|
|
12
|
+
let [prehash, hash] = target.split("#");
|
|
13
|
+
if (prehash) {
|
|
14
|
+
let [path, search] = prehash.split("?");
|
|
15
|
+
if (path) {
|
|
16
|
+
newNavigation.sandboxPath = path;
|
|
17
|
+
}
|
|
18
|
+
newNavigation.search = search ? search : "";
|
|
19
|
+
}
|
|
20
|
+
newNavigation.hash = hash ? hash : "";
|
|
21
|
+
return newNavigation;
|
|
22
|
+
};
|
|
23
|
+
const maybeParseUrl = (str) => {
|
|
24
|
+
try {
|
|
25
|
+
return new URL(str);
|
|
26
|
+
} catch (_) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const isAbsolutePath = (sandboxPath) => sandboxPath.startsWith("/");
|
|
31
|
+
const repositoryPrefixURL = (outerHref, navigationState) => constructUrl(outerHref, {
|
|
32
|
+
...navigationState,
|
|
33
|
+
sandboxPath: ""
|
|
34
|
+
});
|
|
35
|
+
const constructOuterUrl = (previousOuterHref, sandboxTarget, navigationState, addFilesPrefix = true) => {
|
|
36
|
+
if (isAbsolutePath(sandboxTarget)) {
|
|
37
|
+
return constructUrl(
|
|
38
|
+
previousOuterHref,
|
|
39
|
+
{
|
|
40
|
+
...navigationState,
|
|
41
|
+
sandboxPath: addFilesPrefix ? joinPaths(FILES_PREFIX, sandboxTarget) : sandboxTarget
|
|
42
|
+
}
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
return new URL(
|
|
46
|
+
sandboxTarget,
|
|
47
|
+
constructUrl(
|
|
48
|
+
previousOuterHref,
|
|
49
|
+
navigationState
|
|
50
|
+
)
|
|
51
|
+
).toString();
|
|
52
|
+
};
|
|
53
|
+
const isInternalHref = (outerHref, target, navigationState) => {
|
|
54
|
+
const parsedUrl = maybeParseUrl(target);
|
|
55
|
+
if (parsedUrl) {
|
|
56
|
+
return target.startsWith(repositoryPrefixURL(outerHref, navigationState));
|
|
57
|
+
}
|
|
58
|
+
return true;
|
|
59
|
+
};
|
|
60
|
+
const PATH_SEGMENTS = [
|
|
61
|
+
{ name: "mode", pattern: "\\w+" },
|
|
62
|
+
{ name: "provider", pattern: "[a-zA-Z0-9-_]+" },
|
|
63
|
+
{ name: "namespace", pattern: "[a-zA-Z0-9-_]+" },
|
|
64
|
+
{ name: "repository", pattern: "[a-zA-Z0-9-_]+" },
|
|
65
|
+
{ name: "ref", pattern: "[a-zA-Z0-9-_]+" },
|
|
66
|
+
{ name: "sandboxPath", pattern: ".*", transform: (s) => `/${s}` }
|
|
67
|
+
];
|
|
68
|
+
const OUTER_HREF_REGEXP = new RegExp("^" + PATH_SEGMENTS.map(({ name, pattern }) => `/(?<${name}>${pattern})`).join("") + "$");
|
|
69
|
+
const parsePath = (pathname) => {
|
|
70
|
+
const matchResults = pathname.match(OUTER_HREF_REGEXP)?.groups ?? {};
|
|
71
|
+
return PATH_SEGMENTS.reduce((acc, { name, transform }) => {
|
|
72
|
+
let value = void 0;
|
|
73
|
+
if (name in matchResults) {
|
|
74
|
+
value = matchResults[name];
|
|
75
|
+
}
|
|
76
|
+
if (!value) {
|
|
77
|
+
value = "";
|
|
78
|
+
}
|
|
79
|
+
if (typeof value === "string") {
|
|
80
|
+
acc[name] = transform ? transform(value) : value;
|
|
81
|
+
}
|
|
82
|
+
return acc;
|
|
83
|
+
}, {});
|
|
84
|
+
};
|
|
85
|
+
const parseHref = (href) => {
|
|
86
|
+
const parsedUrl = new URL(href);
|
|
87
|
+
const pathnameState = parsePath(parsedUrl.pathname);
|
|
88
|
+
return {
|
|
89
|
+
...pathnameState,
|
|
90
|
+
search: parsedUrl.search.substring(1),
|
|
91
|
+
hash: parsedUrl.hash.substring(1)
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
const stripSlashPrefix = (s) => s.startsWith("/") ? s.substring(1) : s;
|
|
95
|
+
const constructUrl = (outerHref, navigationState) => {
|
|
96
|
+
const path = PATH_SEGMENTS.map(({ name }) => {
|
|
97
|
+
let value = navigationState[name];
|
|
98
|
+
return stripSlashPrefix(value ?? "");
|
|
99
|
+
}).join("/");
|
|
100
|
+
const host = getOuterHostname(outerHref);
|
|
101
|
+
let url = `${host}/${path}`;
|
|
102
|
+
if (navigationState.search) {
|
|
103
|
+
url += "?" + navigationState.search;
|
|
104
|
+
}
|
|
105
|
+
if (navigationState.hash) {
|
|
106
|
+
url += "#" + navigationState.hash;
|
|
107
|
+
}
|
|
108
|
+
return url;
|
|
109
|
+
};
|
|
110
|
+
export {
|
|
111
|
+
FILES_PREFIX,
|
|
112
|
+
constructOuterUrl,
|
|
113
|
+
constructUrl,
|
|
114
|
+
getOuterHostname,
|
|
115
|
+
getSearchParams,
|
|
116
|
+
isAbsolutePath,
|
|
117
|
+
isInternalHref,
|
|
118
|
+
maybeParseUrl,
|
|
119
|
+
parseHref,
|
|
120
|
+
parsePath,
|
|
121
|
+
parseTarget,
|
|
122
|
+
repositoryPrefixURL
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=urlUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/urlUtils.ts"],"sourcesContent":["import { joinPaths } from \"./pathUtils\";\nimport { NavigationState, PathState } from \"./TinkerableContext\";\n\nexport const FILES_PREFIX = '/files';\n\nexport const getOuterHostname = (outerHref:string) => {\n const url = new URL(outerHref);\n return `${url.protocol}//${url.hostname}`;\n}\n\nexport const getSearchParams = (search?: string): Record<string, string> => Object.fromEntries(\n [...(new URLSearchParams(search ?? window.location.search).entries())]);\n\n\nexport const parseTarget = (target: string, navigation: NavigationState): NavigationState => {\n const newNavigation = { ...navigation };\n let [prehash, hash] = target.split(\"#\")\n if (prehash) {\n let [path, search] = prehash.split(\"?\")\n if (path) {\n newNavigation.sandboxPath = path\n }\n newNavigation.search = search ? search : '';\n }\n newNavigation.hash = hash ? hash : '';\n return newNavigation\n}\n\n\nexport const maybeParseUrl = (str: string): URL | null => {\n try {\n return new URL(str);\n } catch (_) {\n return null;\n }\n}\n\nexport const isAbsolutePath = (sandboxPath: string) => sandboxPath.startsWith('/');\n\nexport const repositoryPrefixURL = (outerHref:string, navigationState: NavigationState) => constructUrl(outerHref, {\n ...navigationState,\n sandboxPath: ''\n });\n\nexport const constructOuterUrl = (previousOuterHref:string, sandboxTarget:string, navigationState: NavigationState, addFilesPrefix=true):string => {\n if (isAbsolutePath(sandboxTarget)) {\n return constructUrl(\n previousOuterHref,\n {\n ...navigationState,\n sandboxPath: addFilesPrefix ? joinPaths(FILES_PREFIX, sandboxTarget) : sandboxTarget\n })\n }\n return (\n new URL(\n sandboxTarget,\n constructUrl(\n previousOuterHref,\n navigationState\n )\n )\n ).toString();\n}\n\nexport const isInternalHref = (outerHref:string, target: string, navigationState: NavigationState) => {\n const parsedUrl = maybeParseUrl(target);\n if (parsedUrl) {\n return target.startsWith(repositoryPrefixURL(outerHref, navigationState));\n }\n // if target is not a valid URL, then assume it's relative.\n return true;\n}\n\nexport type PathSegment = {\n name: string,\n pattern: string,\n transform?: (pathSegment: string) => string\n}\n\nconst PATH_SEGMENTS: PathSegment[] = [\n { name: 'mode', pattern: '\\\\w+' },\n { name: 'provider', pattern: '[a-zA-Z0-9-_]+' },\n { name: 'namespace', pattern: '[a-zA-Z0-9-_]+' },\n { name: 'repository', pattern: '[a-zA-Z0-9-_]+' },\n { name: 'ref', pattern: '[a-zA-Z0-9-_]+' },\n { name: 'sandboxPath', pattern: '.*', transform: s => `/${s}` }\n];\n\nconst OUTER_HREF_REGEXP = new RegExp('^' + PATH_SEGMENTS.map(({ name, pattern }) => `\\/(?<${name}>${pattern})`).join('') + \"$\");\n\n\nexport const parsePath = (pathname: string): PathState => {\n const matchResults = pathname.match(OUTER_HREF_REGEXP)?.groups ?? {};\n return PATH_SEGMENTS.reduce((acc: Partial<PathState>, { name, transform }: PathSegment) => {\n let value: string | undefined = undefined;\n if (name in matchResults) {\n value = matchResults[name];\n }\n if (!value) {\n // fall back to default value if var not present in\n value = '';\n }\n if (typeof value === 'string') {\n acc[name] = transform ? transform(value) : value;\n }\n return acc;\n }, {}) as PathState;\n}\n\nexport const parseHref = (href: string): NavigationState => {\n const parsedUrl = new URL(href);\n const pathnameState = parsePath(parsedUrl.pathname);\n return {\n ...pathnameState,\n search: parsedUrl.search.substring(1),\n hash: parsedUrl.hash.substring(1),\n } as NavigationState\n}\n\nconst stripSlashPrefix = (s: string): string => s.startsWith('/') ? s.substring(1) : s;\n\nexport const constructUrl = (outerHref:string, navigationState: NavigationState): string => {\n const path = PATH_SEGMENTS.map(({ name }) => {\n let value = navigationState[name];\n return stripSlashPrefix(value ?? '');\n }).join('/');\n const host = getOuterHostname(outerHref);\n let url = `${host}/${path}`\n if (navigationState.search) {\n url += '?' + navigationState.search\n }\n if (navigationState.hash) {\n url += '#' + navigationState.hash\n }\n return url;\n}\n"],"mappings":"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","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@immediately-run/sdk",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Runtime SDK for code executing inside an immediately.run sandbox.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": "github:immediately-run/immediately-run-sdk",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "./dist/index.cjs",
|
|
9
|
+
"module": "./dist/index.js",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"import": "./dist/index.js",
|
|
15
|
+
"require": "./dist/index.cjs"
|
|
16
|
+
},
|
|
17
|
+
"./*": {
|
|
18
|
+
"types": "./dist/*.d.ts",
|
|
19
|
+
"import": "./dist/*.js",
|
|
20
|
+
"require": "./dist/*.cjs"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"files": [
|
|
24
|
+
"dist"
|
|
25
|
+
],
|
|
26
|
+
"sideEffects": false,
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "tsup",
|
|
29
|
+
"test": "jest",
|
|
30
|
+
"docs": "typedoc",
|
|
31
|
+
"prepublishOnly": "npm run build"
|
|
32
|
+
},
|
|
33
|
+
"peerDependencies": {
|
|
34
|
+
"react": "^19.0.0",
|
|
35
|
+
"react-dom": "^19.0.0"
|
|
36
|
+
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"react-error-boundary": "^6.0.0"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/jest": "^29.5.0",
|
|
42
|
+
"@types/react": "^19.0.0",
|
|
43
|
+
"@types/react-dom": "^19.0.0",
|
|
44
|
+
"jest": "^29.5.0",
|
|
45
|
+
"react": "^19.1.0",
|
|
46
|
+
"react-dom": "^19.1.0",
|
|
47
|
+
"ts-jest": "^29.1.0",
|
|
48
|
+
"ts-node": "^10.9.2",
|
|
49
|
+
"tsup": "^8.0.0",
|
|
50
|
+
"typedoc": "^0.27.0",
|
|
51
|
+
"typescript": "^5.6.0"
|
|
52
|
+
}
|
|
53
|
+
}
|