@kamilio/wire 0.1.2 → 0.1.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/bin/wire-mcp.mjs +1 -1
- package/dist/adapters/root.d.ts +5 -2
- package/dist/adapters/root.d.ts.map +1 -1
- package/dist/adapters/root.js +58 -30
- package/dist/adapters/root.js.map +1 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +9 -36
- package/dist/auth.js.map +1 -1
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/executable.d.ts +3 -1
- package/dist/executable.d.ts.map +1 -1
- package/dist/executable.js +38 -12
- package/dist/executable.js.map +1 -1
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +22 -7
- package/dist/hooks.js.map +1 -1
- package/node_modules/provider-asana/dist/asana-project.d.ts.map +1 -1
- package/node_modules/provider-asana/dist/asana-project.js +3 -0
- package/node_modules/provider-asana/dist/asana-project.js.map +1 -1
- package/node_modules/provider-asana/src/asana-project.ts +2 -0
- package/node_modules/provider-chatgpt/dist/chatgpt.d.ts.map +1 -1
- package/node_modules/provider-chatgpt/dist/chatgpt.js +24 -3
- package/node_modules/provider-chatgpt/dist/chatgpt.js.map +1 -1
- package/node_modules/provider-chatgpt/src/chatgpt.ts +21 -3
- package/node_modules/provider-gmail/dist/gmail.d.ts.map +1 -1
- package/node_modules/provider-gmail/dist/gmail.js +8 -2
- package/node_modules/provider-gmail/dist/gmail.js.map +1 -1
- package/node_modules/provider-gmail/src/gmail.ts +8 -2
- package/node_modules/provider-google-docs/dist/google-docs.d.ts.map +1 -1
- package/node_modules/provider-google-docs/dist/google-docs.js +373 -9
- package/node_modules/provider-google-docs/dist/google-docs.js.map +1 -1
- package/node_modules/provider-google-docs/dist/google-forms.d.ts +28 -0
- package/node_modules/provider-google-docs/dist/google-forms.d.ts.map +1 -0
- package/node_modules/provider-google-docs/dist/google-forms.js +191 -0
- package/node_modules/provider-google-docs/dist/google-forms.js.map +1 -0
- package/node_modules/provider-google-docs/dist/index.d.ts +26 -0
- package/node_modules/provider-google-docs/dist/index.d.ts.map +1 -1
- package/node_modules/provider-google-docs/dist/index.js +3 -1
- package/node_modules/provider-google-docs/dist/index.js.map +1 -1
- package/node_modules/provider-google-docs/src/google-docs.ts +342 -10
- package/node_modules/provider-google-docs/src/google-forms.ts +179 -0
- package/node_modules/provider-google-docs/src/index.ts +3 -1
- package/node_modules/provider-notion/dist/notion-sync.d.ts +2 -2
- package/node_modules/provider-notion/dist/notion-sync.d.ts.map +1 -1
- package/node_modules/provider-notion/dist/notion-sync.js +89 -38
- package/node_modules/provider-notion/dist/notion-sync.js.map +1 -1
- package/node_modules/provider-notion/dist/notion.js +1 -1
- package/node_modules/provider-notion/dist/notion.js.map +1 -1
- package/node_modules/provider-notion/src/notion-sync.ts +90 -35
- package/node_modules/provider-notion/src/notion.ts +1 -1
- package/node_modules/provider-slack/dist/slack.d.ts.map +1 -1
- package/node_modules/provider-slack/dist/slack.js +14 -7
- package/node_modules/provider-slack/dist/slack.js.map +1 -1
- package/node_modules/provider-slack/src/slack.ts +14 -5
- package/node_modules/provider-zoom/dist/zoom-hub.d.ts.map +1 -1
- package/node_modules/provider-zoom/dist/zoom-hub.js +42 -35
- package/node_modules/provider-zoom/dist/zoom-hub.js.map +1 -1
- package/node_modules/provider-zoom/src/zoom-hub.ts +40 -35
- package/node_modules/wire-core/dist/core/model.d.ts +1 -1
- package/node_modules/wire-core/dist/core/model.d.ts.map +1 -1
- package/node_modules/wire-core/dist/core/transform.d.ts +1 -0
- package/node_modules/wire-core/dist/core/transform.d.ts.map +1 -1
- package/node_modules/wire-core/dist/core/transform.js +4 -0
- package/node_modules/wire-core/dist/core/transform.js.map +1 -1
- package/node_modules/wire-core/dist/index.d.ts +3 -2
- package/node_modules/wire-core/dist/index.d.ts.map +1 -1
- package/node_modules/wire-core/dist/index.js +2 -2
- package/node_modules/wire-core/dist/index.js.map +1 -1
- package/node_modules/wire-core/dist/operations.d.ts +3 -0
- package/node_modules/wire-core/dist/operations.d.ts.map +1 -1
- package/node_modules/wire-core/dist/operations.js +50 -9
- package/node_modules/wire-core/dist/operations.js.map +1 -1
- package/node_modules/wire-core/dist/ports.d.ts +1 -0
- package/node_modules/wire-core/dist/ports.d.ts.map +1 -1
- package/node_modules/wire-core/dist/runtime/chrome.d.ts +1 -0
- package/node_modules/wire-core/dist/runtime/chrome.d.ts.map +1 -1
- package/node_modules/wire-core/dist/runtime/chrome.js +91 -83
- package/node_modules/wire-core/dist/runtime/chrome.js.map +1 -1
- package/node_modules/wire-core/dist/runtime/cookies.d.ts.map +1 -1
- package/node_modules/wire-core/dist/runtime/cookies.js +7 -2
- package/node_modules/wire-core/dist/runtime/cookies.js.map +1 -1
- package/node_modules/wire-core/dist/runtime/node.d.ts.map +1 -1
- package/node_modules/wire-core/dist/runtime/node.js +4 -0
- package/node_modules/wire-core/dist/runtime/node.js.map +1 -1
- package/node_modules/wire-core/dist/storage/registry.d.ts.map +1 -1
- package/node_modules/wire-core/dist/storage/registry.js +95 -208
- package/node_modules/wire-core/dist/storage/registry.js.map +1 -1
- package/node_modules/wire-core/dist/storage/workspace.d.ts +3 -0
- package/node_modules/wire-core/dist/storage/workspace.d.ts.map +1 -1
- package/node_modules/wire-core/dist/storage/workspace.js +10 -1
- package/node_modules/wire-core/dist/storage/workspace.js.map +1 -1
- package/node_modules/wire-core/package.json +4 -0
- package/node_modules/wire-core/src/core/model.ts +1 -1
- package/node_modules/wire-core/src/core/transform.ts +5 -1
- package/node_modules/wire-core/src/index.ts +3 -2
- package/node_modules/wire-core/src/operations.ts +56 -10
- package/node_modules/wire-core/src/ports.ts +1 -0
- package/node_modules/wire-core/src/runtime/chrome.ts +99 -80
- package/node_modules/wire-core/src/runtime/cookies.ts +4 -2
- package/node_modules/wire-core/src/runtime/node.ts +4 -0
- package/node_modules/wire-core/src/storage/registry.ts +48 -15
- package/node_modules/wire-core/src/storage/workspace.ts +10 -1
- package/package.json +1 -1
- package/src/adapters/root.ts +51 -31
- package/src/auth.ts +10 -29
- package/src/cli.ts +2 -2
- package/src/executable.ts +38 -12
- package/src/hooks.ts +21 -6
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { JsonValue, RuntimeCapabilities, Source } from "wire-core";
|
|
2
|
+
export declare const googleFormsService: Readonly<{
|
|
3
|
+
name: string;
|
|
4
|
+
matches(url: URL): boolean;
|
|
5
|
+
parse(url: URL): Source;
|
|
6
|
+
fetch(input: RuntimeCapabilities, url: string, source: Readonly<{
|
|
7
|
+
[key: string]: JsonValue;
|
|
8
|
+
service: string;
|
|
9
|
+
identifier: string;
|
|
10
|
+
type: import("wire-core").ResourceType;
|
|
11
|
+
}>): Promise<Readonly<{
|
|
12
|
+
title: string;
|
|
13
|
+
markdown: string;
|
|
14
|
+
data: JsonValue;
|
|
15
|
+
}>>;
|
|
16
|
+
synchronize?(input: RuntimeCapabilities, url: string, source: Readonly<{
|
|
17
|
+
[key: string]: JsonValue;
|
|
18
|
+
service: string;
|
|
19
|
+
identifier: string;
|
|
20
|
+
type: import("wire-core").ResourceType;
|
|
21
|
+
}>, base: JsonValue, markdown: string, markdownPath: string): Promise<Readonly<{
|
|
22
|
+
title: string;
|
|
23
|
+
markdown: string;
|
|
24
|
+
data: JsonValue;
|
|
25
|
+
}>>;
|
|
26
|
+
upload?(input: RuntimeCapabilities, markdown: string, markdownPath: string): Promise<import("wire-core").UploadedDocument>;
|
|
27
|
+
}>;
|
|
28
|
+
//# sourceMappingURL=google-forms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-forms.d.ts","sourceRoot":"","sources":["../src/google-forms.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA+B,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAuKrG,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;EAU7B,CAAC"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { defineService } from "wire-core";
|
|
2
|
+
function formId(url) {
|
|
3
|
+
return /^\/forms(?:\/u\/\d+)?\/d\/([^/]+)(?:\/.*)?$/.exec(url.pathname)[1];
|
|
4
|
+
}
|
|
5
|
+
function formUrl(id) {
|
|
6
|
+
return `https://docs.google.com/forms/d/${encodeURIComponent(id)}/edit`;
|
|
7
|
+
}
|
|
8
|
+
function formsAuthError() {
|
|
9
|
+
return new Error("Google Forms API authentication is missing or expired. Set GOOGLE_FORMS_TOKEN_FILE to an OAuth token with Forms scopes, then retry.");
|
|
10
|
+
}
|
|
11
|
+
function apiDisabledError(body) {
|
|
12
|
+
const error = body["error"];
|
|
13
|
+
if (error === undefined)
|
|
14
|
+
return null;
|
|
15
|
+
const details = Array.isArray(error["details"]) ? error["details"] : [];
|
|
16
|
+
const serviceDisabled = details.find((detail) => {
|
|
17
|
+
const metadata = detail["metadata"];
|
|
18
|
+
return metadata !== undefined && metadata["service"] === "forms.googleapis.com";
|
|
19
|
+
});
|
|
20
|
+
if (serviceDisabled === undefined)
|
|
21
|
+
return null;
|
|
22
|
+
const metadata = serviceDisabled["metadata"];
|
|
23
|
+
const activationUrl = typeof metadata["activationUrl"] === "string" ? metadata["activationUrl"] : typeof metadata["containerInfo"] === "string" ? `https://console.developers.google.com/apis/api/forms.googleapis.com/overview?project=${metadata["containerInfo"]}` : "https://console.developers.google.com/apis/api/forms.googleapis.com/overview";
|
|
24
|
+
return new Error(`Google Forms API is disabled. Enable it at ${activationUrl} then retry.`);
|
|
25
|
+
}
|
|
26
|
+
async function formsJson(runtime, url, label) {
|
|
27
|
+
const token = await runtime.googleFormsTokens.load();
|
|
28
|
+
const response = await runtime.http.request(url, { headers: { authorization: `Bearer ${token.token}` } });
|
|
29
|
+
const text = await response.text();
|
|
30
|
+
const body = text === "" ? {} : JSON.parse(text);
|
|
31
|
+
if (response.status === 401)
|
|
32
|
+
throw formsAuthError();
|
|
33
|
+
if (!response.ok) {
|
|
34
|
+
const disabled = apiDisabledError(body);
|
|
35
|
+
if (disabled !== null)
|
|
36
|
+
throw disabled;
|
|
37
|
+
const error = body["error"];
|
|
38
|
+
const message = typeof error?.["message"] === "string" ? error["message"] : text;
|
|
39
|
+
if (response.status === 403 && /insufficient authentication scopes/i.test(message))
|
|
40
|
+
throw new Error("Google Forms API token is missing required scopes. Regenerate GOOGLE_FORMS_TOKEN_FILE with forms.body and forms.responses.readonly scopes.");
|
|
41
|
+
throw new Error(`Google Forms API ${label} failed: HTTP ${response.status}${message === "" ? "" : ` ${message}`}`);
|
|
42
|
+
}
|
|
43
|
+
return body;
|
|
44
|
+
}
|
|
45
|
+
function optionalString(value) {
|
|
46
|
+
return typeof value === "string" && value !== "" ? value : null;
|
|
47
|
+
}
|
|
48
|
+
function jsonObject(value) {
|
|
49
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
50
|
+
}
|
|
51
|
+
function optionsMarkdown(options) {
|
|
52
|
+
if (!Array.isArray(options))
|
|
53
|
+
return null;
|
|
54
|
+
return options.map((option) => {
|
|
55
|
+
const object = option;
|
|
56
|
+
return object["value"];
|
|
57
|
+
}).join(", ");
|
|
58
|
+
}
|
|
59
|
+
function questionMarkdown(item) {
|
|
60
|
+
const lines = [`- ${item["title"]}`];
|
|
61
|
+
const questionItem = item["questionItem"];
|
|
62
|
+
if (questionItem === undefined)
|
|
63
|
+
return lines;
|
|
64
|
+
const question = questionItem["question"];
|
|
65
|
+
lines.push(` - itemId: ${item["itemId"]}`);
|
|
66
|
+
lines.push(` - questionId: ${question["questionId"]}`);
|
|
67
|
+
if (question["required"] !== undefined)
|
|
68
|
+
lines.push(` - required: ${String(question["required"])}`);
|
|
69
|
+
const textQuestion = question["textQuestion"];
|
|
70
|
+
if (textQuestion !== undefined)
|
|
71
|
+
lines.push(` - type: ${textQuestion["paragraph"] === true ? "paragraph" : "short_text"}`);
|
|
72
|
+
const choiceQuestion = question["choiceQuestion"];
|
|
73
|
+
if (choiceQuestion !== undefined) {
|
|
74
|
+
lines.push(` - type: ${choiceQuestion["type"]}`);
|
|
75
|
+
const options = optionsMarkdown(choiceQuestion["options"]);
|
|
76
|
+
if (options !== null)
|
|
77
|
+
lines.push(` - options: ${options}`);
|
|
78
|
+
}
|
|
79
|
+
const scaleQuestion = question["scaleQuestion"];
|
|
80
|
+
if (scaleQuestion !== undefined) {
|
|
81
|
+
lines.push(" - type: scale");
|
|
82
|
+
lines.push(` - range: ${String(scaleQuestion["low"])} to ${String(scaleQuestion["high"])}`);
|
|
83
|
+
const lowLabel = optionalString(scaleQuestion["lowLabel"]);
|
|
84
|
+
const highLabel = optionalString(scaleQuestion["highLabel"]);
|
|
85
|
+
if (lowLabel !== null)
|
|
86
|
+
lines.push(` - lowLabel: ${lowLabel}`);
|
|
87
|
+
if (highLabel !== null)
|
|
88
|
+
lines.push(` - highLabel: ${highLabel}`);
|
|
89
|
+
}
|
|
90
|
+
if (question["dateQuestion"] !== undefined)
|
|
91
|
+
lines.push(" - type: date");
|
|
92
|
+
if (question["timeQuestion"] !== undefined)
|
|
93
|
+
lines.push(" - type: time");
|
|
94
|
+
const ratingQuestion = question["ratingQuestion"];
|
|
95
|
+
if (ratingQuestion !== undefined) {
|
|
96
|
+
lines.push(" - type: rating");
|
|
97
|
+
lines.push(` - level: ${String(ratingQuestion["ratingScaleLevel"])}`);
|
|
98
|
+
lines.push(` - icon: ${String(ratingQuestion["iconType"])}`);
|
|
99
|
+
}
|
|
100
|
+
if (question["fileUploadQuestion"] !== undefined)
|
|
101
|
+
lines.push(" - type: file_upload");
|
|
102
|
+
if (question["rowQuestion"] !== undefined)
|
|
103
|
+
lines.push(" - type: row");
|
|
104
|
+
return lines;
|
|
105
|
+
}
|
|
106
|
+
function answerTexts(answer) {
|
|
107
|
+
const textAnswers = answer["textAnswers"];
|
|
108
|
+
if (textAnswers !== undefined && Array.isArray(textAnswers["answers"]))
|
|
109
|
+
return textAnswers["answers"].map((value) => value["value"]);
|
|
110
|
+
return [JSON.stringify(answer)];
|
|
111
|
+
}
|
|
112
|
+
function formAnswers(response) {
|
|
113
|
+
const answers = response["answers"];
|
|
114
|
+
if (answers === undefined)
|
|
115
|
+
return [];
|
|
116
|
+
return Object.entries(answers).flatMap(([questionId, answer]) => answerTexts(answer).map((text) => ({ questionId, text })));
|
|
117
|
+
}
|
|
118
|
+
function formMarkdown(form, responses) {
|
|
119
|
+
const info = form["info"];
|
|
120
|
+
const title = info["title"];
|
|
121
|
+
const id = form["formId"];
|
|
122
|
+
const lines = [`# ${title}`, "", `- Form ID: ${id}`, `- Edit: ${formUrl(id)}`];
|
|
123
|
+
const responder = optionalString(form["responderUri"]);
|
|
124
|
+
if (responder !== null)
|
|
125
|
+
lines.push(`- Responder: ${responder}`);
|
|
126
|
+
const publish = form["publishSettings"]?.["publishState"];
|
|
127
|
+
if (publish !== undefined) {
|
|
128
|
+
lines.push(`- Published: ${String(publish["isPublished"])}`);
|
|
129
|
+
lines.push(`- Accepting responses: ${String(publish["isAcceptingResponses"])}`);
|
|
130
|
+
}
|
|
131
|
+
lines.push("", "## Items");
|
|
132
|
+
const items = form["items"];
|
|
133
|
+
if (items === undefined || items.length === 0)
|
|
134
|
+
lines.push("No items.");
|
|
135
|
+
else
|
|
136
|
+
for (const item of items)
|
|
137
|
+
lines.push(...questionMarkdown(item));
|
|
138
|
+
lines.push("", "## Responses", "", `Response count: ${responses.length}`);
|
|
139
|
+
for (const response of responses) {
|
|
140
|
+
lines.push("", `### ${response["responseId"]}`);
|
|
141
|
+
const createTime = optionalString(response["createTime"]);
|
|
142
|
+
const submitted = optionalString(response["lastSubmittedTime"]);
|
|
143
|
+
if (createTime !== null)
|
|
144
|
+
lines.push(`- Created: ${createTime}`);
|
|
145
|
+
if (submitted !== null)
|
|
146
|
+
lines.push(`- Submitted: ${submitted}`);
|
|
147
|
+
for (const answer of formAnswers(response))
|
|
148
|
+
lines.push(`- ${answer.questionId}: ${answer.text}`);
|
|
149
|
+
}
|
|
150
|
+
return `${lines.join("\n")}\n`;
|
|
151
|
+
}
|
|
152
|
+
async function allResponses(runtime, id) {
|
|
153
|
+
const responses = [];
|
|
154
|
+
let pageToken;
|
|
155
|
+
for (;;) {
|
|
156
|
+
const url = new URL(`https://forms.googleapis.com/v1/forms/${encodeURIComponent(id)}/responses`);
|
|
157
|
+
if (pageToken !== undefined)
|
|
158
|
+
url.searchParams.set("pageToken", pageToken);
|
|
159
|
+
const body = await formsJson(runtime, url.toString(), "responses.list");
|
|
160
|
+
if (Array.isArray(body["responses"]))
|
|
161
|
+
responses.push(...body["responses"]);
|
|
162
|
+
if (typeof body["nextPageToken"] !== "string")
|
|
163
|
+
break;
|
|
164
|
+
pageToken = body["nextPageToken"];
|
|
165
|
+
}
|
|
166
|
+
return responses;
|
|
167
|
+
}
|
|
168
|
+
async function fetchGoogleForm(runtime, source) {
|
|
169
|
+
const form = await formsJson(runtime, `https://forms.googleapis.com/v1/forms/${encodeURIComponent(source.identifier)}`, "forms.get");
|
|
170
|
+
const responses = await allResponses(runtime, source.identifier);
|
|
171
|
+
const info = form["info"];
|
|
172
|
+
const markdown = formMarkdown(form, responses);
|
|
173
|
+
return Object.freeze({
|
|
174
|
+
title: info["title"],
|
|
175
|
+
markdown,
|
|
176
|
+
data: { form, responses, markdown },
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
export const googleFormsService = defineService({
|
|
180
|
+
name: "google-forms",
|
|
181
|
+
matches: (url) => url.hostname === "docs.google.com" && /^\/forms(?:\/u\/\d+)?\/d\/[^/]+(?:\/.*)?$/.test(url.pathname),
|
|
182
|
+
parse: (url) => Object.freeze({ service: "google-forms", identifier: formId(url), type: "form" }),
|
|
183
|
+
fetch: (runtime, _url, source) => fetchGoogleForm(runtime, source),
|
|
184
|
+
synchronize: async (runtime, _url, source, base, markdown) => {
|
|
185
|
+
const baseMarkdown = jsonObject(base) && typeof base["markdown"] === "string" ? base["markdown"] : null;
|
|
186
|
+
if (baseMarkdown !== null && markdown !== baseMarkdown)
|
|
187
|
+
throw new Error("Google Forms sync is download-only. Revert local edits or use `wire download <url>` for a fresh copy.");
|
|
188
|
+
return fetchGoogleForm(runtime, source);
|
|
189
|
+
},
|
|
190
|
+
});
|
|
191
|
+
//# sourceMappingURL=google-forms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-forms.js","sourceRoot":"","sources":["../src/google-forms.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { googleDocsService } from "./google-docs.js";
|
|
2
|
+
export { googleFormsService } from "./google-forms.js";
|
|
2
3
|
export declare const googleDocsProvider: Readonly<{
|
|
3
4
|
services: readonly [Readonly<{
|
|
4
5
|
name: string;
|
|
@@ -25,6 +26,31 @@ export declare const googleDocsProvider: Readonly<{
|
|
|
25
26
|
data: import("wire-core").JsonValue;
|
|
26
27
|
}>>;
|
|
27
28
|
upload?(input: import("wire-core").RuntimeCapabilities, markdown: string, markdownPath: string): Promise<import("wire-core").UploadedDocument>;
|
|
29
|
+
}>, Readonly<{
|
|
30
|
+
name: string;
|
|
31
|
+
matches(url: URL): boolean;
|
|
32
|
+
parse(url: URL): import("wire-core").Source;
|
|
33
|
+
fetch(input: import("wire-core").RuntimeCapabilities, url: string, source: Readonly<{
|
|
34
|
+
[key: string]: import("wire-core").JsonValue;
|
|
35
|
+
service: string;
|
|
36
|
+
identifier: string;
|
|
37
|
+
type: import("wire-core").ResourceType;
|
|
38
|
+
}>): Promise<Readonly<{
|
|
39
|
+
title: string;
|
|
40
|
+
markdown: string;
|
|
41
|
+
data: import("wire-core").JsonValue;
|
|
42
|
+
}>>;
|
|
43
|
+
synchronize?(input: import("wire-core").RuntimeCapabilities, url: string, source: Readonly<{
|
|
44
|
+
[key: string]: import("wire-core").JsonValue;
|
|
45
|
+
service: string;
|
|
46
|
+
identifier: string;
|
|
47
|
+
type: import("wire-core").ResourceType;
|
|
48
|
+
}>, base: import("wire-core").JsonValue, markdown: string, markdownPath: string): Promise<Readonly<{
|
|
49
|
+
title: string;
|
|
50
|
+
markdown: string;
|
|
51
|
+
data: import("wire-core").JsonValue;
|
|
52
|
+
}>>;
|
|
53
|
+
upload?(input: import("wire-core").RuntimeCapabilities, markdown: string, markdownPath: string): Promise<import("wire-core").UploadedDocument>;
|
|
28
54
|
}>];
|
|
29
55
|
}>;
|
|
30
56
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE7B,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { googleDocsService } from "./google-docs.js";
|
|
2
|
+
import { googleFormsService } from "./google-forms.js";
|
|
2
3
|
export { googleDocsService } from "./google-docs.js";
|
|
4
|
+
export { googleFormsService } from "./google-forms.js";
|
|
3
5
|
export const googleDocsProvider = Object.freeze({
|
|
4
|
-
services: [googleDocsService],
|
|
6
|
+
services: [googleFormsService, googleDocsService],
|
|
5
7
|
});
|
|
6
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9C,QAAQ,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,CAAU;CAC3D,CAAC,CAAC"}
|