@wix/astro 0.2.13 → 0.2.15
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/dist/components/TailwindEditor/EditorPanel.d.ts +11 -0
- package/dist/components/TailwindEditor/EditorPanel.js +86 -0
- package/dist/components/TailwindEditor/dev-toolbar-app.d.ts +14 -0
- package/dist/components/TailwindEditor/dev-toolbar-app.js +39 -0
- package/dist/components/TailwindEditor/dev-toolbar.d.ts +13 -0
- package/dist/components/TailwindEditor/dev-toolbar.js +547 -0
- package/dist/components/TailwindEditor/index.d.ts +5 -0
- package/dist/components/TailwindEditor/index.js +155 -0
- package/dist/components/TailwindEditor/integration.d.ts +3 -0
- package/dist/components/TailwindEditor/integration.js +18 -0
- package/dist/components/TailwindEditor/types.d.ts +35 -0
- package/dist/components/TailwindEditor/types.js +2 -0
- package/dist/components/TailwindEditor/utils.d.ts +22 -0
- package/dist/components/TailwindEditor/utils.js +234 -0
- package/dist/components/login-helpers/bi-header-generator.d.ts +11 -0
- package/dist/components/login-helpers/bi-header-generator.js +18 -0
- package/dist/components/login-helpers/iframeUtils.d.ts +4 -0
- package/dist/components/login-helpers/iframeUtils.js +44 -0
- package/dist/components/login-helpers/login-helpers.d.ts +39 -0
- package/dist/components/login-helpers/login-helpers.js +117 -0
- package/dist/dev-toolbar/Editor/EditorPanel.d.ts +14 -0
- package/dist/dev-toolbar/Editor/EditorPanel.js +1273 -0
- package/dist/dev-toolbar/Editor/classes.d.ts +12 -0
- package/dist/dev-toolbar/Editor/classes.js +271 -0
- package/dist/dev-toolbar/Editor/dnd.d.ts +34 -0
- package/dist/dev-toolbar/Editor/dnd.js +1161 -0
- package/dist/dev-toolbar/Editor/index.d.ts +5 -0
- package/dist/dev-toolbar/Editor/index.js +136 -0
- package/dist/dev-toolbar/Editor/types.d.ts +42 -0
- package/dist/dev-toolbar/Editor/types.js +2 -0
- package/dist/dev-toolbar/agent-chat.d.ts +14 -0
- package/dist/dev-toolbar/agent-chat.js +362 -0
- package/dist/dev-toolbar/ai-agent-server.d.ts +1 -0
- package/dist/dev-toolbar/ai-agent-server.js +174 -0
- package/dist/dev-toolbar/ai-agent.d.ts +2 -0
- package/dist/dev-toolbar/ai-agent.js +171 -0
- package/dist/dev-toolbar/api-key-form.d.ts +7 -0
- package/dist/dev-toolbar/api-key-form.js +138 -0
- package/dist/dev-toolbar/astro-toolbar.d.ts +1156 -0
- package/dist/dev-toolbar/astro-toolbar.js +29 -0
- package/dist/dev-toolbar/editor.d.ts +2 -0
- package/dist/dev-toolbar/editor.js +19 -0
- package/dist/integration.d.ts +3 -1
- package/dist/integration.js +41 -10
- package/dist/routes/auth/callback.js +1 -1
- package/dist/src/auth-context.d.ts +5 -0
- package/dist/src/auth-context.js +3 -0
- package/dist/src/client.d.ts +15 -0
- package/dist/src/client.js +17 -0
- package/dist/src/entrypoints/server.d.ts +13 -0
- package/dist/src/entrypoints/server.js +37 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.js +5 -0
- package/dist/src/integration.d.ts +8 -0
- package/dist/src/integration.js +229 -0
- package/dist/src/loaders/blog.d.ts +2 -0
- package/dist/src/loaders/blog.js +49 -0
- package/dist/src/loaders/index.d.ts +2 -0
- package/dist/src/loaders/index.js +3 -0
- package/dist/src/middleware.d.ts +2 -0
- package/dist/src/middleware.js +90 -0
- package/dist/src/routes/auth/callback.d.ts +3 -0
- package/dist/src/routes/auth/callback.js +53 -0
- package/dist/src/routes/auth/constants.d.ts +5 -0
- package/dist/src/routes/auth/constants.js +6 -0
- package/dist/src/routes/auth/login.d.ts +3 -0
- package/dist/src/routes/auth/login.js +27 -0
- package/dist/src/routes/auth/logout-callback.d.ts +3 -0
- package/dist/src/routes/auth/logout-callback.js +10 -0
- package/dist/src/routes/auth/logout.d.ts +3 -0
- package/dist/src/routes/auth/logout.js +11 -0
- package/dist/src/routes/auth/runtime.d.ts +5 -0
- package/dist/src/routes/auth/runtime.js +8 -0
- package/dist/src/runtime.d.ts +2 -0
- package/dist/src/runtime.js +9 -0
- package/dist/src/vite-plugins/sdk-context.d.ts +4 -0
- package/dist/src/vite-plugins/sdk-context.js +68 -0
- package/dist/vite-plugins/sdk-context.d.ts +3 -1
- package/dist/vite-plugins/sdk-context.js +51 -70
- package/package.json +6 -3
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState, useCallback } from 'react';
|
|
3
|
+
import EditorPanel from './EditorPanel.js';
|
|
4
|
+
import { extractAstroSourceInfo, applyChanges } from './utils.js';
|
|
5
|
+
const TailwindEditor = () => {
|
|
6
|
+
const [showPanel, setShowPanel] = useState(false);
|
|
7
|
+
const [selectedElement, setSelectedElement] = useState(null);
|
|
8
|
+
const [originalClasses, setOriginalClasses] = useState([]);
|
|
9
|
+
const [currentClasses, setCurrentClasses] = useState([]);
|
|
10
|
+
const [selectionMode, setSelectionMode] = useState(false);
|
|
11
|
+
// Function to clear current selection - moved outside useEffect for reusability
|
|
12
|
+
const clearSelection = useCallback(() => {
|
|
13
|
+
if (selectedElement) {
|
|
14
|
+
// Reset the element to its original classes if panel was closed without applying
|
|
15
|
+
if (!showPanel) {
|
|
16
|
+
selectedElement.className = originalClasses.join(' ');
|
|
17
|
+
}
|
|
18
|
+
setSelectedElement(null);
|
|
19
|
+
setOriginalClasses([]);
|
|
20
|
+
setCurrentClasses([]);
|
|
21
|
+
}
|
|
22
|
+
}, [selectedElement, showPanel, originalClasses]);
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
// Set up keyboard shortcuts
|
|
25
|
+
const toggleSelectionMode = (e) => {
|
|
26
|
+
// Alt+Shift+T to toggle selection mode
|
|
27
|
+
if (e.altKey && e.shiftKey && e.key === 'T') {
|
|
28
|
+
e.preventDefault();
|
|
29
|
+
setSelectionMode(prev => !prev);
|
|
30
|
+
}
|
|
31
|
+
// Escape to exit selection mode
|
|
32
|
+
if (e.key === 'Escape' && selectionMode) {
|
|
33
|
+
clearSelection();
|
|
34
|
+
setSelectionMode(false);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
// Function to highlight elements on hover during selection mode
|
|
38
|
+
const highlightElement = (e) => {
|
|
39
|
+
if (!selectionMode)
|
|
40
|
+
return;
|
|
41
|
+
e.preventDefault();
|
|
42
|
+
e.stopPropagation();
|
|
43
|
+
const target = e.target;
|
|
44
|
+
// Check if the element has Astro source information
|
|
45
|
+
if (target && extractAstroSourceInfo(target)) {
|
|
46
|
+
// Add a highlight effect
|
|
47
|
+
target.style.outline = '2px solid #3b82f6';
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
// Function to remove highlight on mouseout
|
|
51
|
+
const removeHighlight = (e) => {
|
|
52
|
+
if (!selectionMode)
|
|
53
|
+
return;
|
|
54
|
+
const target = e.target;
|
|
55
|
+
if (target) {
|
|
56
|
+
target.style.outline = '';
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
// Function to select an element on click during selection mode
|
|
60
|
+
const selectElement = (e) => {
|
|
61
|
+
if (!selectionMode)
|
|
62
|
+
return;
|
|
63
|
+
e.preventDefault();
|
|
64
|
+
e.stopPropagation();
|
|
65
|
+
const target = e.target;
|
|
66
|
+
// Check if the element has Astro source information
|
|
67
|
+
const sourceInfo = target && extractAstroSourceInfo(target);
|
|
68
|
+
if (target && sourceInfo) {
|
|
69
|
+
setSelectedElement(target);
|
|
70
|
+
// Extract classes from the element
|
|
71
|
+
const classes = Array.from(target.classList);
|
|
72
|
+
setOriginalClasses(classes);
|
|
73
|
+
setCurrentClasses(classes);
|
|
74
|
+
// Exit selection mode and show editor panel
|
|
75
|
+
setSelectionMode(false);
|
|
76
|
+
setShowPanel(true);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
// Add event listeners
|
|
80
|
+
document.addEventListener('keydown', toggleSelectionMode);
|
|
81
|
+
if (selectionMode) {
|
|
82
|
+
document.addEventListener('mouseover', highlightElement);
|
|
83
|
+
document.addEventListener('mouseout', removeHighlight);
|
|
84
|
+
document.addEventListener('click', selectElement);
|
|
85
|
+
}
|
|
86
|
+
// Clean up event listeners on unmount or when selectionMode changes
|
|
87
|
+
return () => {
|
|
88
|
+
document.removeEventListener('keydown', toggleSelectionMode);
|
|
89
|
+
document.removeEventListener('mouseover', highlightElement);
|
|
90
|
+
document.removeEventListener('mouseout', removeHighlight);
|
|
91
|
+
document.removeEventListener('click', selectElement);
|
|
92
|
+
};
|
|
93
|
+
}, [selectionMode, clearSelection]);
|
|
94
|
+
// Function to handle applying changes
|
|
95
|
+
const handleApplyChanges = async (changeSet) => {
|
|
96
|
+
if (changeSet.length === 0)
|
|
97
|
+
return;
|
|
98
|
+
try {
|
|
99
|
+
// Apply the changes to the actual files
|
|
100
|
+
const success = await applyChanges(changeSet);
|
|
101
|
+
if (success) {
|
|
102
|
+
console.log('Changes applied successfully!');
|
|
103
|
+
// Update the current classes
|
|
104
|
+
if (selectedElement) {
|
|
105
|
+
const newClasses = Array.from(selectedElement.classList);
|
|
106
|
+
setCurrentClasses(newClasses);
|
|
107
|
+
setOriginalClasses(newClasses); // Update original classes to match new state
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
console.error('Failed to apply changes.');
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
console.error('Error applying changes:', error);
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
// Function to close the editor panel
|
|
119
|
+
const closePanel = () => {
|
|
120
|
+
setShowPanel(false);
|
|
121
|
+
clearSelection();
|
|
122
|
+
};
|
|
123
|
+
// Render selection mode indicator or editor panel
|
|
124
|
+
return (_jsxs(_Fragment, { children: [selectionMode && (_jsx("div", { style: {
|
|
125
|
+
position: 'fixed',
|
|
126
|
+
top: '20px',
|
|
127
|
+
left: '20px',
|
|
128
|
+
background: '#3b82f6',
|
|
129
|
+
color: 'white',
|
|
130
|
+
padding: '8px 16px',
|
|
131
|
+
borderRadius: '4px',
|
|
132
|
+
zIndex: 9999,
|
|
133
|
+
boxShadow: '0 2px 5px rgba(0,0,0,0.2)',
|
|
134
|
+
pointerEvents: 'none',
|
|
135
|
+
}, children: "Selection Mode: Click on an element to edit" })), showPanel && (_jsx(EditorPanel, { selectedElement: selectedElement, originalClasses: originalClasses, currentClasses: currentClasses, onApplyChanges: handleApplyChanges, onClose: closePanel })), _jsx("button", { id: "tailwind-editor-fab", onClick: () => setSelectionMode(prev => !prev), style: {
|
|
136
|
+
position: 'fixed',
|
|
137
|
+
bottom: '20px',
|
|
138
|
+
right: '20px',
|
|
139
|
+
background: selectionMode ? '#ef4444' : '#3b82f6',
|
|
140
|
+
color: 'white',
|
|
141
|
+
padding: '12px',
|
|
142
|
+
borderRadius: '50%',
|
|
143
|
+
width: '48px',
|
|
144
|
+
height: '48px',
|
|
145
|
+
display: 'flex',
|
|
146
|
+
alignItems: 'center',
|
|
147
|
+
justifyContent: 'center',
|
|
148
|
+
boxShadow: '0 2px 10px rgba(0,0,0,0.2)',
|
|
149
|
+
cursor: 'pointer',
|
|
150
|
+
zIndex: 9998,
|
|
151
|
+
border: 'none',
|
|
152
|
+
}, title: selectionMode ? 'Exit Selection Mode' : 'Enter Selection Mode (Alt+Shift+T)', children: _jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M12 2v20M2 12h20" }) }) })] }));
|
|
153
|
+
};
|
|
154
|
+
export default TailwindEditor;
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9UYWlsd2luZEVkaXRvci9pbmRleC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQWMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNoRSxPQUFPLFdBQVcsTUFBTSxrQkFBa0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBSWxFLE1BQU0sY0FBYyxHQUFrQyxHQUFHLEVBQUU7SUFDekQsTUFBTSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsTUFBTSxDQUFDLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQyxHQUFHLFFBQVEsQ0FBcUIsSUFBSSxDQUFDLENBQUM7SUFDakYsTUFBTSxDQUFDLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQyxHQUFHLFFBQVEsQ0FBVyxFQUFFLENBQUMsQ0FBQztJQUNyRSxNQUFNLENBQUMsY0FBYyxFQUFFLGlCQUFpQixDQUFDLEdBQUcsUUFBUSxDQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFMUQsZ0ZBQWdGO0lBQ2hGLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7UUFDdEMsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixpRkFBaUY7WUFDakYsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNmLGVBQWUsQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4RCxDQUFDO1lBRUQsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsa0JBQWtCLENBQUMsRUFB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
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { fileURLToPath } from 'node:url';
|
|
2
|
+
const tailwindEditor = () => {
|
|
3
|
+
return {
|
|
4
|
+
name: 'wix-tailwind-editor',
|
|
5
|
+
hooks: {
|
|
6
|
+
'astro:config:setup': ({ addDevToolbarApp }) => {
|
|
7
|
+
addDevToolbarApp({
|
|
8
|
+
id: "wix-tailwind-editor",
|
|
9
|
+
name: "Tailwind Editor",
|
|
10
|
+
icon: "🎨",
|
|
11
|
+
entrypoint: fileURLToPath(new URL('./dev-toolbar-app.js', import.meta.url))
|
|
12
|
+
});
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export default tailwindEditor;
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9UYWlsd2luZEVkaXRvci9pbnRlZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR3pDLE1BQU0sY0FBYyxHQUFHLEdBQXFCLEVBQUU7SUFDNUMsT0FBTztRQUNMLElBQUksRUFBRSxxQkFBcUI7UUFDM0IsS0FBSyxFQUFFO1lBQ0wsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRTtnQkFDN0MsZ0JBQWdCLENBQUM7b0JBQ2YsRUFBRSxFQUFFLHFCQUFxQjtvQkFDekIsSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsSUFBSSxFQUFFLElBQUk7b0JBQ1YsVUFBVSxFQUFFLGFBQWEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUM1RSxDQUFDLENBQUM7WUFDTCxDQUFDO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsZUFBZSxjQUFjLENBQUMifQ==
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export type ChangeSetItem = {
|
|
2
|
+
file: string;
|
|
3
|
+
line: number;
|
|
4
|
+
instruction: {
|
|
5
|
+
type: string;
|
|
6
|
+
delta?: {
|
|
7
|
+
added: string[];
|
|
8
|
+
removed: string[];
|
|
9
|
+
};
|
|
10
|
+
textContent?: string;
|
|
11
|
+
propName?: string;
|
|
12
|
+
path?: string;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export type ClassChangeInstruction = {
|
|
16
|
+
type: "class_change";
|
|
17
|
+
propName?: string;
|
|
18
|
+
path?: string;
|
|
19
|
+
builtinStyles?: string;
|
|
20
|
+
delta?: {
|
|
21
|
+
added: string[];
|
|
22
|
+
removed: string[];
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export type TextChangeInstruction = {
|
|
26
|
+
type: "replace_text";
|
|
27
|
+
textContent: string;
|
|
28
|
+
};
|
|
29
|
+
export type SchemaMap = {
|
|
30
|
+
[componentName: string]: {
|
|
31
|
+
selectorToChangeInstruction: {
|
|
32
|
+
[selector: string]: ClassChangeInstruction;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ChangeSetItem } from './types.js';
|
|
2
|
+
import * as t from '@babel/types';
|
|
3
|
+
export declare function calcFinalClasses(previous: string, changes: {
|
|
4
|
+
added: string[];
|
|
5
|
+
removed: string[];
|
|
6
|
+
}): string;
|
|
7
|
+
export declare function findNodeAtLine(ast: t.File, targetLine: number): null;
|
|
8
|
+
export declare function hasCnImport(ast: t.File): boolean;
|
|
9
|
+
export declare function addCnImportIfNotExist(ast: t.File): void;
|
|
10
|
+
export declare function assignFinalValue(ast: t.File, previous: t.JSXAttribute | t.ObjectProperty, changes: {
|
|
11
|
+
added: string[];
|
|
12
|
+
removed: string[];
|
|
13
|
+
}): boolean;
|
|
14
|
+
export declare function updateComponentAttribute(node: t.JSXOpeningElement, delta: {
|
|
15
|
+
added: string[];
|
|
16
|
+
removed: string[];
|
|
17
|
+
}, ast: t.File, propName?: string, path?: string): void;
|
|
18
|
+
export declare function applyChanges(changeSet: ChangeSetItem[]): Promise<boolean>;
|
|
19
|
+
export declare function extractAstroSourceInfo(element: HTMLElement): {
|
|
20
|
+
file: string;
|
|
21
|
+
line: number;
|
|
22
|
+
} | null;
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import fs from 'fs/promises';
|
|
2
|
+
import * as parser from '@babel/parser';
|
|
3
|
+
import traverse from '@babel/traverse';
|
|
4
|
+
import * as t from '@babel/types';
|
|
5
|
+
import generate from '@babel/generator';
|
|
6
|
+
// Helper function to calculate final classes
|
|
7
|
+
export function calcFinalClasses(previous, changes) {
|
|
8
|
+
const currentClasses = previous.split(/\s+/);
|
|
9
|
+
const classesAfterRemoval = currentClasses.filter((cls) => !changes.removed.includes(cls));
|
|
10
|
+
return [...classesAfterRemoval, ...changes.added].filter(Boolean).join(' ');
|
|
11
|
+
}
|
|
12
|
+
// Helper function to find the node at a specific line number
|
|
13
|
+
export function findNodeAtLine(ast, targetLine) {
|
|
14
|
+
let foundNode = null;
|
|
15
|
+
console.log(`[findNodeAtLine] Searching for JSX component at line ${targetLine}`);
|
|
16
|
+
// @ts-ignore - Traverse is actually callable but TypeScript doesn't recognize it correctly
|
|
17
|
+
traverse(ast, {
|
|
18
|
+
JSXOpeningElement(path) {
|
|
19
|
+
const loc = path.node.loc;
|
|
20
|
+
if (loc && loc.start.line === targetLine) {
|
|
21
|
+
console.log(`[findNodeAtLine] Found matching node:`, {
|
|
22
|
+
type: path.node.type,
|
|
23
|
+
name: path.node.name.type === 'JSXIdentifier'
|
|
24
|
+
? path.node.name.name
|
|
25
|
+
: 'ComplexName',
|
|
26
|
+
attributes: path.node.attributes.length,
|
|
27
|
+
});
|
|
28
|
+
foundNode = path.node;
|
|
29
|
+
path.stop();
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
return foundNode;
|
|
34
|
+
}
|
|
35
|
+
// Helper function to check if the file has the cn import
|
|
36
|
+
export function hasCnImport(ast) {
|
|
37
|
+
let hasImport = false;
|
|
38
|
+
// @ts-ignore - Traverse is actually callable but TypeScript doesn't recognize it correctly
|
|
39
|
+
traverse(ast, {
|
|
40
|
+
ImportDeclaration(path) {
|
|
41
|
+
// Check if it's importing from utility file
|
|
42
|
+
if (t.isStringLiteral(path.node.source) &&
|
|
43
|
+
(path.node.source.value.includes('/utils') ||
|
|
44
|
+
path.node.source.value.includes('/lib/utils'))) {
|
|
45
|
+
// Check if cn is among the imported specifiers
|
|
46
|
+
for (const specifier of path.node.specifiers) {
|
|
47
|
+
if (t.isImportSpecifier(specifier) &&
|
|
48
|
+
t.isIdentifier(specifier.imported) &&
|
|
49
|
+
specifier.imported.name === 'cn') {
|
|
50
|
+
hasImport = true;
|
|
51
|
+
path.stop();
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
return hasImport;
|
|
59
|
+
}
|
|
60
|
+
// Function to add cn import if not present
|
|
61
|
+
export function addCnImportIfNotExist(ast) {
|
|
62
|
+
if (hasCnImport(ast)) {
|
|
63
|
+
return; // Already imported
|
|
64
|
+
}
|
|
65
|
+
// Create a new cn import specifier
|
|
66
|
+
const cnSpecifier = t.importSpecifier(t.identifier('cn'), t.identifier('cn'));
|
|
67
|
+
// Flag to track if we found and modified an existing import
|
|
68
|
+
let cnImportAdded = false;
|
|
69
|
+
// @ts-ignore - Traverse is actually callable but TypeScript doesn't recognize it correctly
|
|
70
|
+
traverse(ast, {
|
|
71
|
+
ImportDeclaration(path) {
|
|
72
|
+
if (t.isStringLiteral(path.node.source) &&
|
|
73
|
+
(path.node.source.value.includes('/utils') ||
|
|
74
|
+
path.node.source.value.includes('/lib/utils'))) {
|
|
75
|
+
path.node.specifiers.push(cnSpecifier);
|
|
76
|
+
cnImportAdded = true;
|
|
77
|
+
path.stop();
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
// If we didn't find an existing import, add a new one
|
|
82
|
+
if (!cnImportAdded) {
|
|
83
|
+
const importDeclaration = t.importDeclaration([cnSpecifier], t.stringLiteral('./utils'));
|
|
84
|
+
// Add at the beginning of the file
|
|
85
|
+
if (ast.program.body.length > 0) {
|
|
86
|
+
ast.program.body.unshift(importDeclaration);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
ast.program.body.push(importDeclaration);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Function to assign final class values
|
|
94
|
+
export function assignFinalValue(ast, previous, changes) {
|
|
95
|
+
// Handle string literal
|
|
96
|
+
if (t.isStringLiteral(previous.value)) {
|
|
97
|
+
const str = previous.value.value;
|
|
98
|
+
let finalClasses = calcFinalClasses(str, changes);
|
|
99
|
+
if (finalClasses) {
|
|
100
|
+
previous.value = t.stringLiteral(finalClasses);
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
// Handle JSX expression container with string literal
|
|
106
|
+
if (t.isJSXExpressionContainer(previous.value) &&
|
|
107
|
+
t.isStringLiteral(previous.value.expression)) {
|
|
108
|
+
const str = previous.value.expression.value;
|
|
109
|
+
let finalClasses = calcFinalClasses(str, changes);
|
|
110
|
+
if (finalClasses) {
|
|
111
|
+
previous.value = t.jsxExpressionContainer(t.stringLiteral(finalClasses));
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
// Handle JSX expression container with cn call
|
|
117
|
+
if (t.isJSXExpressionContainer(previous.value)) {
|
|
118
|
+
const expression = previous.value.expression;
|
|
119
|
+
if (t.isCallExpression(expression) &&
|
|
120
|
+
t.isIdentifier(expression.callee) &&
|
|
121
|
+
expression.callee.name === 'cn') {
|
|
122
|
+
if (expression.arguments.length > 0 &&
|
|
123
|
+
t.isStringLiteral(expression.arguments[expression.arguments.length - 1])) {
|
|
124
|
+
// If it's already a cn call with a string as last argument, append to that string
|
|
125
|
+
const lastArg = expression.arguments[expression.arguments.length - 1];
|
|
126
|
+
const newString = calcFinalClasses(lastArg.value, changes);
|
|
127
|
+
if (newString) {
|
|
128
|
+
expression.arguments[expression.arguments.length - 1] =
|
|
129
|
+
t.stringLiteral(newString);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
// Remove the last argument if it becomes empty
|
|
133
|
+
expression.arguments.pop();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
// Otherwise add a new string literal argument
|
|
138
|
+
if (changes.added.length > 0) {
|
|
139
|
+
expression.arguments.push(t.stringLiteral(changes.added.join(' ')));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
else if (t.isExpression(expression)) {
|
|
145
|
+
// It's another expression, wrap it in cn call
|
|
146
|
+
addCnImportIfNotExist(ast);
|
|
147
|
+
if (changes.added.length > 0) {
|
|
148
|
+
previous.value = t.jsxExpressionContainer(t.callExpression(t.identifier('cn'), [
|
|
149
|
+
expression,
|
|
150
|
+
t.stringLiteral(changes.added.join(' ')),
|
|
151
|
+
]));
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
// Function to update component attributes
|
|
159
|
+
export function updateComponentAttribute(node, delta, ast, propName = 'className', path) {
|
|
160
|
+
let attr = node.attributes.find((attr) => t.isJSXAttribute(attr) &&
|
|
161
|
+
t.isJSXIdentifier(attr.name) &&
|
|
162
|
+
attr.name.name === propName);
|
|
163
|
+
if (!attr) {
|
|
164
|
+
// If attribute doesn't exist, create it
|
|
165
|
+
attr = t.jsxAttribute(t.jsxIdentifier(propName), t.stringLiteral(''));
|
|
166
|
+
node.attributes.push(attr);
|
|
167
|
+
}
|
|
168
|
+
// Update the attribute directly if no path is provided
|
|
169
|
+
if (!path) {
|
|
170
|
+
assignFinalValue(ast, attr, delta);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
// Path handling would go here, but that's a more complex case
|
|
174
|
+
// Simplified for this implementation
|
|
175
|
+
console.log(`Path-based updates not fully implemented: ${path}`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// Function to handle applying changes to a file
|
|
179
|
+
export async function applyChanges(changeSet) {
|
|
180
|
+
try {
|
|
181
|
+
for (const change of changeSet) {
|
|
182
|
+
const fileContent = await fs.readFile(change.file, 'utf-8');
|
|
183
|
+
// Parse the file with Babel
|
|
184
|
+
const ast = parser.parse(fileContent, {
|
|
185
|
+
sourceType: 'module',
|
|
186
|
+
plugins: ['jsx', 'typescript'],
|
|
187
|
+
});
|
|
188
|
+
if (change.instruction.type === 'class_change') {
|
|
189
|
+
const node = findNodeAtLine(ast, change.line);
|
|
190
|
+
if (!node) {
|
|
191
|
+
console.error(`Could not find node at line ${change.line} in ${change.file}`);
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
const propName = change.instruction.propName || 'className';
|
|
195
|
+
const delta = change.instruction.delta || { added: [], removed: [] };
|
|
196
|
+
updateComponentAttribute(node, delta, ast, propName, change.instruction.path);
|
|
197
|
+
}
|
|
198
|
+
else if (change.instruction.type === 'replace_text') {
|
|
199
|
+
// Text replacement would go here
|
|
200
|
+
console.log('Text replacement not implemented yet');
|
|
201
|
+
}
|
|
202
|
+
// Generate the updated code
|
|
203
|
+
// @ts-ignore - Generate is actually callable but TypeScript doesn't recognize it correctly
|
|
204
|
+
const output = generate(ast);
|
|
205
|
+
// Write the changes back to the file
|
|
206
|
+
await fs.writeFile(change.file, output.code, 'utf-8');
|
|
207
|
+
}
|
|
208
|
+
return true;
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
console.error('Error applying changes:', error);
|
|
212
|
+
return false;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
// Extract Astro source information from DOM elements
|
|
216
|
+
export function extractAstroSourceInfo(element) {
|
|
217
|
+
// Astro adds source information in a data attribute like data-astro-source="path:line:column"
|
|
218
|
+
const sourceAttr = element.getAttribute('data-astro-source');
|
|
219
|
+
if (!sourceAttr) {
|
|
220
|
+
return null;
|
|
221
|
+
}
|
|
222
|
+
const parts = sourceAttr.split(':');
|
|
223
|
+
if (parts.length < 2) {
|
|
224
|
+
return null;
|
|
225
|
+
}
|
|
226
|
+
const file = parts[0];
|
|
227
|
+
const lineStr = parts[1] || '1'; // Default to line 1 if not found
|
|
228
|
+
const line = parseInt(lineStr, 10);
|
|
229
|
+
if (!file || isNaN(line)) {
|
|
230
|
+
return null;
|
|
231
|
+
}
|
|
232
|
+
return { file, line };
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9UYWlsd2luZEVkaXRvci91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0IsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxRQUFRLE1BQU0saUJBQWlCLENBQUM7QUFFdkMsT0FBTyxLQUFLLENBQUMsTUFBTSxjQUFjLENBQUM7QUFDbEMsT0FBTyxRQUFRLE1BQU0sa0JBQWtCLENBQUM7QUFFeEMsNkNBQTZDO0FBQzdDLE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsUUFBZ0IsRUFDaEIsT0FBK0M7SUFFL0MsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxNQUFNLG1CQUFtQixHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQy9DLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUN4QyxDQUFDO0lBQ0YsT0FBTyxDQUFDLEdBQUcsbUJBQW1CLEVBQUUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5RSxDQUFDO0FBRUQsNkRBQTZEO0FBQzdELE1BQU0sVUFBVSxjQUFjLENBQUMsR0FBVyxFQUFFLFVBQWtCO0lBQzVELElBQUksU0FBUyxHQUErQixJQUFJLENBQUM7SUFFakQsT0FBTyxDQUFDLEdBQUcsQ0FDVCx3REFBd0QsVUFBVSxFQUFFLENBQ3JFLENBQUM7SUFFRiwyRkFBMkY7SUFDM0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUNaLGlCQUFpQixDQUFDLElBQW1DO1lBQ25ELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJ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
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { APIMetadata, PublicMetadata } from '@wix/sdk-types';
|
|
2
|
+
export declare const WixBIHeaderName = "x-wix-bi-gateway";
|
|
3
|
+
export type WixBIHeaderValues = {
|
|
4
|
+
['environment']: 'js-sdk' | string;
|
|
5
|
+
['package-name']?: string;
|
|
6
|
+
['method-fqn']?: string;
|
|
7
|
+
['entity']?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function biHeaderGenerator(apiMetadata: APIMetadata, publicMetadata?: PublicMetadata, environment?: string): {
|
|
10
|
+
[WixBIHeaderName]: string;
|
|
11
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export const WixBIHeaderName = 'x-wix-bi-gateway';
|
|
2
|
+
export function biHeaderGenerator(apiMetadata, publicMetadata, environment) {
|
|
3
|
+
return {
|
|
4
|
+
[WixBIHeaderName]: objectToKeyValue({
|
|
5
|
+
environment: `js-sdk${environment ? `-${environment}` : ``}`,
|
|
6
|
+
'package-name': apiMetadata.packageName ?? publicMetadata?.PACKAGE_NAME,
|
|
7
|
+
'method-fqn': apiMetadata.methodFqn,
|
|
8
|
+
entity: apiMetadata.entityFqdn,
|
|
9
|
+
}),
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function objectToKeyValue(input) {
|
|
13
|
+
return Object.entries(input)
|
|
14
|
+
.filter(([_, value]) => Boolean(value))
|
|
15
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
16
|
+
.join(',');
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmktaGVhZGVyLWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvbG9naW4taGVscGVycy9iaS1oZWFkZXItZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQztBQVNsRCxNQUFNLFVBQVUsaUJBQWlCLENBQy9CLFdBQXdCLEVBQ3hCLGNBQStCLEVBQy9CLFdBQW9CO0lBRXBCLE9BQU87UUFDTCxDQUFDLGVBQWUsQ0FBQyxFQUFFLGdCQUFnQixDQUFDO1lBQ2xDLFdBQVcsRUFBRSxTQUFTLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzVELGNBQWMsRUFBRSxXQUFXLENBQUMsV0FBVyxJQUFJLGNBQWMsRUFBRSxZQUFZO1lBQ3ZFLFlBQVksRUFBRSxXQUFXLENBQUMsU0FBUztZQUNuQyxNQUFNLEVBQUUsV0FBVyxDQUFDLFVBQVU7U0FDL0IsQ0FBQztLQUNILENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxLQUF3QjtJQUNoRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1NBQ3pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1NBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmLENBQUMifQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function addListener(eventTarget: any, name: string, fn: Function): void;
|
|
2
|
+
export declare function removeListener(eventTarget: any, name: string, fn: Function): void;
|
|
3
|
+
export declare function loadFrame(src: string): HTMLIFrameElement;
|
|
4
|
+
export declare function addPostMessageListener(state: string): Promise<unknown>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export function addListener(eventTarget, name, fn) {
|
|
2
|
+
if (eventTarget.addEventListener) {
|
|
3
|
+
eventTarget.addEventListener(name, fn);
|
|
4
|
+
}
|
|
5
|
+
else {
|
|
6
|
+
eventTarget.attachEvent('on' + name, fn);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function removeListener(eventTarget, name, fn) {
|
|
10
|
+
if (eventTarget.removeEventListener) {
|
|
11
|
+
eventTarget.removeEventListener(name, fn);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
eventTarget.detachEvent('on' + name, fn);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function loadFrame(src) {
|
|
18
|
+
const iframe = document.createElement('iframe');
|
|
19
|
+
iframe.style.display = 'none';
|
|
20
|
+
iframe.src = src;
|
|
21
|
+
return document.body.appendChild(iframe);
|
|
22
|
+
}
|
|
23
|
+
export function addPostMessageListener(state) {
|
|
24
|
+
let responseHandler;
|
|
25
|
+
let timeoutId;
|
|
26
|
+
const msgReceivedOrTimeout = new Promise((resolve, reject) => {
|
|
27
|
+
responseHandler = (e) => {
|
|
28
|
+
if (!e.data || e.data.state !== state) {
|
|
29
|
+
// A message not meant for us
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
resolve(e.data);
|
|
33
|
+
};
|
|
34
|
+
addListener(window, 'message', responseHandler);
|
|
35
|
+
timeoutId = setTimeout(() => {
|
|
36
|
+
reject(new Error('OAuth flow timed out'));
|
|
37
|
+
}, 120000);
|
|
38
|
+
});
|
|
39
|
+
return msgReceivedOrTimeout.finally(() => {
|
|
40
|
+
clearTimeout(timeoutId);
|
|
41
|
+
removeListener(window, 'message', responseHandler);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZyYW1lVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnRzL2xvZ2luLWhlbHBlcnMvaWZyYW1lVXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFdBQVcsQ0FBQyxXQUFnQixFQUFFLElBQVksRUFBRSxFQUFZO0lBQ3RFLElBQUksV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDakMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDO1NBQU0sQ0FBQztRQUNOLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsV0FBZ0IsRUFBRSxJQUFZLEVBQUUsRUFBWTtJQUN6RSxJQUFJLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3BDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztTQUFNLENBQUM7UUFDTixXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLEdBQVc7SUFDbkMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoRCxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDOUIsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFFakIsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLEtBQWE7SUFDbEQsSUFBSSxlQUFvQixDQUFDO0lBQ3pCLElBQUksU0FBYyxDQUFDO0lBQ25CLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDM0QsZUFBZSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQ3RDLDZCQUE2QjtnQkFDN0IsT0FBTztZQUNULENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FBQztRQUVGLFdBQVcsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBRWhELFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQzFCLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7UUFDNUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2IsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7UUFDdkMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hCLGNBQWMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyJ9
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export interface OauthPKCE {
|
|
2
|
+
codeVerifier: string;
|
|
3
|
+
codeChallenge: string;
|
|
4
|
+
state: string;
|
|
5
|
+
}
|
|
6
|
+
export interface OauthData extends OauthPKCE {
|
|
7
|
+
originalUri: string;
|
|
8
|
+
redirectUri: string;
|
|
9
|
+
}
|
|
10
|
+
export interface OauthPKCE {
|
|
11
|
+
codeVerifier: string;
|
|
12
|
+
codeChallenge: string;
|
|
13
|
+
state: string;
|
|
14
|
+
}
|
|
15
|
+
export interface Token {
|
|
16
|
+
value: string;
|
|
17
|
+
}
|
|
18
|
+
export interface AccessToken extends Token {
|
|
19
|
+
expiresAt: number;
|
|
20
|
+
}
|
|
21
|
+
export declare enum TokenRole {
|
|
22
|
+
NONE = "none",
|
|
23
|
+
VISITOR = "visitor",
|
|
24
|
+
MEMBER = "member"
|
|
25
|
+
}
|
|
26
|
+
export interface TokenResponse {
|
|
27
|
+
access_token: string;
|
|
28
|
+
expires_in: number;
|
|
29
|
+
refresh_token: string | null;
|
|
30
|
+
token_type: string;
|
|
31
|
+
scope?: string | null;
|
|
32
|
+
}
|
|
33
|
+
export declare const getMemberTokensForDirectLogin: (sessionToken: string) => Promise<{
|
|
34
|
+
accessToken: AccessToken;
|
|
35
|
+
refreshToken: {
|
|
36
|
+
value: string;
|
|
37
|
+
role: TokenRole;
|
|
38
|
+
};
|
|
39
|
+
}>;
|