@relayfile/adapter-linear 0.1.14 → 0.1.16
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/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/path-mapper.d.ts.map +1 -1
- package/dist/path-mapper.js +10 -3
- package/dist/path-mapper.js.map +1 -1
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/writeback.d.ts +14 -0
- package/dist/writeback.d.ts.map +1 -0
- package/dist/writeback.js +308 -0
- package/dist/writeback.js.map +1 -0
- package/dist/writeback.test.d.ts +2 -0
- package/dist/writeback.test.d.ts.map +1 -0
- package/dist/writeback.test.js +102 -0
- package/dist/writeback.test.js.map +1 -0
- package/package.json +11 -1
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-mapper.d.ts","sourceRoot":"","sources":["../src/path-mapper.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAE1C,eAAO,MAAM,mBAAmB,2FAStB,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAgCxE,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7D;
|
|
1
|
+
{"version":3,"file":"path-mapper.d.ts","sourceRoot":"","sources":["../src/path-mapper.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAE1C,eAAO,MAAM,mBAAmB,2FAStB,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAgCxE,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7D;AA0BD,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,oBAAoB,CAOlF;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAsB9F"}
|
package/dist/path-mapper.js
CHANGED
|
@@ -47,12 +47,19 @@ function slugify(value) {
|
|
|
47
47
|
.replace(/^-+|-+$/g, '')
|
|
48
48
|
.toLowerCase();
|
|
49
49
|
}
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
/**
|
|
51
|
+
* Encode an id as a path-safe suffix that can be losslessly reversed.
|
|
52
|
+
* We dehyphenate so the suffix is a single token (no `-` collision with
|
|
53
|
+
* the slug separator) but keep the full id so the round-trip is
|
|
54
|
+
* unambiguous. Truncating to 8 chars (the previous behaviour) breaks
|
|
55
|
+
* writeback resolvers that need the full id to address the resource.
|
|
56
|
+
*/
|
|
57
|
+
function idSuffix(id) {
|
|
58
|
+
return id.replace(/-/g, '');
|
|
52
59
|
}
|
|
53
60
|
function titleSegmentWithId(title, id) {
|
|
54
61
|
const slug = title ? slugify(title) : '';
|
|
55
|
-
return slug ? `${slug}--${
|
|
62
|
+
return slug ? `${slug}--${idSuffix(id)}` : encodeLinearPathSegment(id);
|
|
56
63
|
}
|
|
57
64
|
export function normalizeLinearObjectType(objectType) {
|
|
58
65
|
const normalized = objectType.trim().toLowerCase();
|
package/dist/path-mapper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-mapper.js","sourceRoot":"","sources":["../src/path-mapper.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAE1C,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,SAAS;IACT,OAAO;IACP,OAAO;IACP,WAAW;IACX,SAAS;IACT,SAAS;IACT,MAAM;IACN,MAAM;CACE,CAAC;AAIX,MAAM,mBAAmB,GAAmD;IAC1E,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,OAAO;IACf,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,OAAO;IACf,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,WAAW;IACvB,gBAAgB,EAAE,WAAW;IAC7B,iBAAiB,EAAE,WAAW;IAC9B,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,SAAS;IACnB,aAAa,EAAE,SAAS;IACxB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,MAAM;CACd,CAAC;AAEF,SAAS,qBAAqB,CAAC,KAAa,EAAE,KAAa;IACzD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,6BAA6B,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,OAAO,kBAAkB,CAAC,qBAAqB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,OAAO,CAAC,KAAa;IAC5B,OAAO,KAAK;SACT,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,
|
|
1
|
+
{"version":3,"file":"path-mapper.js","sourceRoot":"","sources":["../src/path-mapper.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -8,6 +8,20 @@ export type JsonArray = JsonValue[];
|
|
|
8
8
|
export type JsonObject = {
|
|
9
9
|
[key: string]: JsonValue;
|
|
10
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* Describes a Linear write the cloud writeback engine should execute via the
|
|
13
|
+
* provider proxy. Linear's API is GraphQL, so every writeback is a POST to
|
|
14
|
+
* `/graphql` with `{ query, variables }`.
|
|
15
|
+
*/
|
|
16
|
+
export interface LinearWritebackRequest {
|
|
17
|
+
action: 'create_comment' | 'create_issue' | 'update_issue';
|
|
18
|
+
method: 'POST';
|
|
19
|
+
endpoint: '/graphql';
|
|
20
|
+
body: {
|
|
21
|
+
query: string;
|
|
22
|
+
variables: Record<string, unknown>;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
11
25
|
export interface LinearAdapterConfig {
|
|
12
26
|
apiUrl?: string;
|
|
13
27
|
appName?: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { LinearWritebackRequest } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Resolve a relayfile writeback into a Linear GraphQL mutation request.
|
|
4
|
+
*
|
|
5
|
+
* Supported routes (today):
|
|
6
|
+
* POST /linear/issues/<slug>--<uuid>/comments/new.json → commentCreate
|
|
7
|
+
* POST /linear/issues/new.json → issueCreate
|
|
8
|
+
* PATCH/PUT /linear/issues/<slug>--<uuid>.json → issueUpdate
|
|
9
|
+
*
|
|
10
|
+
* The path-mapper emits issue paths as `<slug>--<32-hex>`. We reverse the
|
|
11
|
+
* suffix to recover the canonical UUID Linear's API requires.
|
|
12
|
+
*/
|
|
13
|
+
export declare function resolveWritebackRequest(path: string, content: string): LinearWritebackRequest;
|
|
14
|
+
//# sourceMappingURL=writeback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writeback.d.ts","sourceRoot":"","sources":["../src/writeback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpE;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,sBAAsB,CAmB7F"}
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve a relayfile writeback into a Linear GraphQL mutation request.
|
|
3
|
+
*
|
|
4
|
+
* Supported routes (today):
|
|
5
|
+
* POST /linear/issues/<slug>--<uuid>/comments/new.json → commentCreate
|
|
6
|
+
* POST /linear/issues/new.json → issueCreate
|
|
7
|
+
* PATCH/PUT /linear/issues/<slug>--<uuid>.json → issueUpdate
|
|
8
|
+
*
|
|
9
|
+
* The path-mapper emits issue paths as `<slug>--<32-hex>`. We reverse the
|
|
10
|
+
* suffix to recover the canonical UUID Linear's API requires.
|
|
11
|
+
*/
|
|
12
|
+
export function resolveWritebackRequest(path, content) {
|
|
13
|
+
// Comment on an existing issue.
|
|
14
|
+
const newCommentMatch = path.match(/^\/linear\/issues\/([^/]+)\/comments\/new\.json$/);
|
|
15
|
+
if (newCommentMatch?.[1]) {
|
|
16
|
+
return buildCommentCreate(extractLinearId(newCommentMatch[1]), content);
|
|
17
|
+
}
|
|
18
|
+
// Create a brand-new issue.
|
|
19
|
+
if (path === '/linear/issues/new.json' || path === '/linear/issues/') {
|
|
20
|
+
return buildIssueCreate(content);
|
|
21
|
+
}
|
|
22
|
+
// Update an existing issue's metadata.
|
|
23
|
+
const issueUpdateMatch = path.match(/^\/linear\/issues\/([^/]+)\.json$/);
|
|
24
|
+
if (issueUpdateMatch?.[1]) {
|
|
25
|
+
return buildIssueUpdate(extractLinearId(issueUpdateMatch[1]), content);
|
|
26
|
+
}
|
|
27
|
+
throw new Error(`No Linear writeback rule matched ${path}`);
|
|
28
|
+
}
|
|
29
|
+
/* ------------------------------------------------------------------ *
|
|
30
|
+
* Path → id resolution
|
|
31
|
+
* ------------------------------------------------------------------ */
|
|
32
|
+
/**
|
|
33
|
+
* Reverse the path-mapper's `<slug>--<id>` encoding.
|
|
34
|
+
*
|
|
35
|
+
* Path-mapper emits segments in two shapes:
|
|
36
|
+
* - `<slug>--<32-hex>` when a title is present (the common case).
|
|
37
|
+
* Reformatted to canonical UUID 8-4-4-4-12.
|
|
38
|
+
* - bare `<id>` when no title is available. Decoded and passed
|
|
39
|
+
* through; the GraphQL layer validates.
|
|
40
|
+
*
|
|
41
|
+
* Legacy 8-char suffixes (pre-fix paths) are rejected explicitly so callers
|
|
42
|
+
* get a "re-sync required" message instead of an opaque downstream 400.
|
|
43
|
+
* Team-prefixed identifiers (e.g. `PROJ-441`) are also rejected — they are
|
|
44
|
+
* the user-facing key, not the canonical UUID writebacks need.
|
|
45
|
+
*/
|
|
46
|
+
function extractLinearId(segment) {
|
|
47
|
+
const decoded = decodeURIComponent(segment);
|
|
48
|
+
const slugged32 = /--([0-9a-f]{32})$/i.exec(decoded);
|
|
49
|
+
if (slugged32?.[1])
|
|
50
|
+
return formatUuid(slugged32[1]);
|
|
51
|
+
if (/--[0-9a-f]{8}$/i.test(decoded)) {
|
|
52
|
+
throw new Error(`Linear path "${segment}" uses a legacy 8-char id suffix that cannot be ` +
|
|
53
|
+
`losslessly resolved. Run \`relayfile pull\` to re-sync paths.`);
|
|
54
|
+
}
|
|
55
|
+
if (/^[A-Z]+-\d+$/.test(decoded)) {
|
|
56
|
+
throw new Error(`Linear path "${segment}" uses a team-prefixed identifier; writeback ` +
|
|
57
|
+
`requires the canonical UUID. Re-emit the path with the UUID suffix.`);
|
|
58
|
+
}
|
|
59
|
+
const bareHex = /^([0-9a-f]{32})$/i.exec(decoded);
|
|
60
|
+
if (bareHex?.[1])
|
|
61
|
+
return formatUuid(bareHex[1]);
|
|
62
|
+
// Canonical UUIDs and synthetic test ids fall through.
|
|
63
|
+
return decoded;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Reformat a 32-char hex string back to canonical UUID `8-4-4-4-12` form.
|
|
67
|
+
* Inverse of the dehyphenation done by `path-mapper.idSuffix()`.
|
|
68
|
+
*/
|
|
69
|
+
function formatUuid(hex32) {
|
|
70
|
+
return `${hex32.slice(0, 8)}-${hex32.slice(8, 12)}-${hex32.slice(12, 16)}-${hex32.slice(16, 20)}-${hex32.slice(20, 32)}`;
|
|
71
|
+
}
|
|
72
|
+
/* ------------------------------------------------------------------ *
|
|
73
|
+
* Mutation builders
|
|
74
|
+
* ------------------------------------------------------------------ */
|
|
75
|
+
const COMMENT_CREATE_MUTATION = `mutation RelayfileCommentCreate($input: CommentCreateInput!) {
|
|
76
|
+
commentCreate(input: $input) {
|
|
77
|
+
success
|
|
78
|
+
comment { id url }
|
|
79
|
+
}
|
|
80
|
+
}`;
|
|
81
|
+
const ISSUE_CREATE_MUTATION = `mutation RelayfileIssueCreate($input: IssueCreateInput!) {
|
|
82
|
+
issueCreate(input: $input) {
|
|
83
|
+
success
|
|
84
|
+
issue { id identifier url }
|
|
85
|
+
}
|
|
86
|
+
}`;
|
|
87
|
+
const ISSUE_UPDATE_MUTATION = `mutation RelayfileIssueUpdate($id: String!, $input: IssueUpdateInput!) {
|
|
88
|
+
issueUpdate(id: $id, input: $input) {
|
|
89
|
+
success
|
|
90
|
+
issue { id identifier url }
|
|
91
|
+
}
|
|
92
|
+
}`;
|
|
93
|
+
/**
|
|
94
|
+
* Build a `commentCreate` mutation request for the writeback engine.
|
|
95
|
+
*
|
|
96
|
+
* Accepts two payload shapes:
|
|
97
|
+
* - a plain string: becomes the comment body verbatim.
|
|
98
|
+
* - a JSON object with a `body` field plus optional `parentId` (thread
|
|
99
|
+
* reply target) and `doNotSubscribeToIssue` (skip the implicit
|
|
100
|
+
* subscription Linear adds for commenters).
|
|
101
|
+
*/
|
|
102
|
+
function buildCommentCreate(issueId, content) {
|
|
103
|
+
const parsed = safeParseJson(content);
|
|
104
|
+
// Plain string body becomes a simple comment.
|
|
105
|
+
if (typeof parsed === 'string') {
|
|
106
|
+
return {
|
|
107
|
+
action: 'create_comment',
|
|
108
|
+
method: 'POST',
|
|
109
|
+
endpoint: '/graphql',
|
|
110
|
+
body: {
|
|
111
|
+
query: COMMENT_CREATE_MUTATION,
|
|
112
|
+
variables: { input: { issueId, body: parsed } },
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
// JSON object: pull body + optional parentId, doNotSubscribeToIssue, etc.
|
|
117
|
+
if (!isRecord(parsed)) {
|
|
118
|
+
throw new Error('comments/new.json writeback expects a JSON object or plain string');
|
|
119
|
+
}
|
|
120
|
+
const body = readString(parsed, 'body');
|
|
121
|
+
if (!body) {
|
|
122
|
+
throw new Error('comments/new.json writeback requires a non-empty `body`');
|
|
123
|
+
}
|
|
124
|
+
const input = { issueId, body };
|
|
125
|
+
const parentId = readString(parsed, 'parentId');
|
|
126
|
+
if (parentId)
|
|
127
|
+
input.parentId = parentId;
|
|
128
|
+
const doNotSubscribe = readBoolean(parsed, 'doNotSubscribeToIssue');
|
|
129
|
+
if (doNotSubscribe !== undefined)
|
|
130
|
+
input.doNotSubscribeToIssue = doNotSubscribe;
|
|
131
|
+
return {
|
|
132
|
+
action: 'create_comment',
|
|
133
|
+
method: 'POST',
|
|
134
|
+
endpoint: '/graphql',
|
|
135
|
+
body: { query: COMMENT_CREATE_MUTATION, variables: { input } },
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Build an `issueCreate` mutation request for the writeback engine.
|
|
140
|
+
*
|
|
141
|
+
* Requires `teamId` and `title` in the payload. All other Linear
|
|
142
|
+
* `IssueCreateInput` fields are optional and forwarded if present.
|
|
143
|
+
*/
|
|
144
|
+
function buildIssueCreate(content) {
|
|
145
|
+
const payload = parseJsonObject(content);
|
|
146
|
+
const teamId = readString(payload, 'teamId');
|
|
147
|
+
if (!teamId) {
|
|
148
|
+
throw new Error('issues/new.json writeback requires a `teamId`');
|
|
149
|
+
}
|
|
150
|
+
const title = readString(payload, 'title');
|
|
151
|
+
if (!title) {
|
|
152
|
+
throw new Error('issues/new.json writeback requires a `title`');
|
|
153
|
+
}
|
|
154
|
+
const input = { teamId, title };
|
|
155
|
+
const description = readString(payload, 'description');
|
|
156
|
+
if (description)
|
|
157
|
+
input.description = description;
|
|
158
|
+
const priority = readNumber(payload, 'priority');
|
|
159
|
+
if (priority !== undefined)
|
|
160
|
+
input.priority = priority;
|
|
161
|
+
const assigneeId = readString(payload, 'assigneeId');
|
|
162
|
+
if (assigneeId)
|
|
163
|
+
input.assigneeId = assigneeId;
|
|
164
|
+
const stateId = readString(payload, 'stateId');
|
|
165
|
+
if (stateId)
|
|
166
|
+
input.stateId = stateId;
|
|
167
|
+
const projectId = readString(payload, 'projectId');
|
|
168
|
+
if (projectId)
|
|
169
|
+
input.projectId = projectId;
|
|
170
|
+
const cycleId = readString(payload, 'cycleId');
|
|
171
|
+
if (cycleId)
|
|
172
|
+
input.cycleId = cycleId;
|
|
173
|
+
const labelIds = readStringArray(payload, 'labelIds');
|
|
174
|
+
if (labelIds)
|
|
175
|
+
input.labelIds = labelIds;
|
|
176
|
+
const dueDate = readString(payload, 'dueDate');
|
|
177
|
+
if (dueDate)
|
|
178
|
+
input.dueDate = dueDate;
|
|
179
|
+
const estimate = readNumber(payload, 'estimate');
|
|
180
|
+
if (estimate !== undefined)
|
|
181
|
+
input.estimate = estimate;
|
|
182
|
+
const parentId = readString(payload, 'parentId');
|
|
183
|
+
if (parentId)
|
|
184
|
+
input.parentId = parentId;
|
|
185
|
+
return {
|
|
186
|
+
action: 'create_issue',
|
|
187
|
+
method: 'POST',
|
|
188
|
+
endpoint: '/graphql',
|
|
189
|
+
body: { query: ISSUE_CREATE_MUTATION, variables: { input } },
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Server-managed fields that must never be forwarded as part of an
|
|
194
|
+
* `IssueUpdateInput`. Linear rejects updates that try to mutate these.
|
|
195
|
+
*/
|
|
196
|
+
const ISSUE_UPDATE_DENYLIST = new Set([
|
|
197
|
+
'id',
|
|
198
|
+
'identifier',
|
|
199
|
+
'createdAt',
|
|
200
|
+
'updatedAt',
|
|
201
|
+
'archivedAt',
|
|
202
|
+
'url',
|
|
203
|
+
'team',
|
|
204
|
+
'creator',
|
|
205
|
+
'parent',
|
|
206
|
+
]);
|
|
207
|
+
/**
|
|
208
|
+
* Envelope marker fields written by `LinearAdapter.renderContent()`. When the
|
|
209
|
+
* payload presents itself as the synced envelope (rather than a bare update
|
|
210
|
+
* input), unwrap to the inner `payload` before applying the denylist.
|
|
211
|
+
*
|
|
212
|
+
* Without this step, a round-tripped synced file would forward `provider`,
|
|
213
|
+
* `workspaceId`, `objectType`, etc. into the GraphQL mutation and Linear
|
|
214
|
+
* would reject the request.
|
|
215
|
+
*/
|
|
216
|
+
const ENVELOPE_MARKER_KEYS = ['provider', 'objectType', 'objectId', 'workspaceId'];
|
|
217
|
+
function looksLikeSyncedEnvelope(payload) {
|
|
218
|
+
if (!isRecord(payload.payload))
|
|
219
|
+
return false;
|
|
220
|
+
return ENVELOPE_MARKER_KEYS.some((key) => key in payload);
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Build an `issueUpdate` mutation request for the writeback engine.
|
|
224
|
+
*
|
|
225
|
+
* Accepts two payload shapes:
|
|
226
|
+
* - the full synced envelope produced by `LinearAdapter.renderContent()`,
|
|
227
|
+
* with editable fields under `payload`. We unwrap automatically.
|
|
228
|
+
* - a bare update input where the top-level object IS the input (the form
|
|
229
|
+
* a hand-written workflow or specialist agent typically produces).
|
|
230
|
+
*
|
|
231
|
+
* Server-managed fields are stripped in either case.
|
|
232
|
+
*/
|
|
233
|
+
function buildIssueUpdate(issueId, content) {
|
|
234
|
+
const parsed = parseJsonObject(content);
|
|
235
|
+
const source = looksLikeSyncedEnvelope(parsed)
|
|
236
|
+
? parsed.payload
|
|
237
|
+
: parsed;
|
|
238
|
+
const input = {};
|
|
239
|
+
for (const [key, value] of Object.entries(source)) {
|
|
240
|
+
if (ISSUE_UPDATE_DENYLIST.has(key))
|
|
241
|
+
continue;
|
|
242
|
+
input[key] = value;
|
|
243
|
+
}
|
|
244
|
+
if (Object.keys(input).length === 0) {
|
|
245
|
+
throw new Error('issues/<id>.json update writeback requires at least one mutable field');
|
|
246
|
+
}
|
|
247
|
+
return {
|
|
248
|
+
action: 'update_issue',
|
|
249
|
+
method: 'POST',
|
|
250
|
+
endpoint: '/graphql',
|
|
251
|
+
body: { query: ISSUE_UPDATE_MUTATION, variables: { id: issueId, input } },
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
/* ------------------------------------------------------------------ *
|
|
255
|
+
* JSON helpers
|
|
256
|
+
* ------------------------------------------------------------------ */
|
|
257
|
+
/** Parse `content` as a JSON object, throwing if it isn't an object. */
|
|
258
|
+
function parseJsonObject(content) {
|
|
259
|
+
const parsed = safeParseJson(content);
|
|
260
|
+
if (!isRecord(parsed)) {
|
|
261
|
+
throw new Error('Expected JSON object payload');
|
|
262
|
+
}
|
|
263
|
+
return parsed;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Parse `content` as JSON, falling back to the trimmed raw string when
|
|
267
|
+
* parsing fails. Lets a caller accept both `'"hello"'` and `hello` for
|
|
268
|
+
* plain-text comment bodies.
|
|
269
|
+
*/
|
|
270
|
+
function safeParseJson(content) {
|
|
271
|
+
try {
|
|
272
|
+
return JSON.parse(content);
|
|
273
|
+
}
|
|
274
|
+
catch {
|
|
275
|
+
return content.trim();
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
/** Type guard: is the value a non-array, non-null object? */
|
|
279
|
+
function isRecord(value) {
|
|
280
|
+
return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
|
|
281
|
+
}
|
|
282
|
+
/** Return the value at `key` if it is a non-empty string, otherwise `undefined`. */
|
|
283
|
+
function readString(record, key) {
|
|
284
|
+
const value = record[key];
|
|
285
|
+
return typeof value === 'string' && value.length > 0 ? value : undefined;
|
|
286
|
+
}
|
|
287
|
+
/** Return the value at `key` if it is a boolean, otherwise `undefined`. */
|
|
288
|
+
function readBoolean(record, key) {
|
|
289
|
+
return typeof record[key] === 'boolean' ? record[key] : undefined;
|
|
290
|
+
}
|
|
291
|
+
/** Return the value at `key` if it is a finite number, otherwise `undefined`. */
|
|
292
|
+
function readNumber(record, key) {
|
|
293
|
+
return typeof record[key] === 'number' && Number.isFinite(record[key])
|
|
294
|
+
? record[key]
|
|
295
|
+
: undefined;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Return the value at `key` if it is a non-empty array of strings, otherwise
|
|
299
|
+
* `undefined`. Non-string entries are filtered out.
|
|
300
|
+
*/
|
|
301
|
+
function readStringArray(record, key) {
|
|
302
|
+
const value = record[key];
|
|
303
|
+
if (!Array.isArray(value))
|
|
304
|
+
return undefined;
|
|
305
|
+
const filtered = value.filter((entry) => typeof entry === 'string');
|
|
306
|
+
return filtered.length > 0 ? filtered : undefined;
|
|
307
|
+
}
|
|
308
|
+
//# sourceMappingURL=writeback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writeback.js","sourceRoot":"","sources":["../src/writeback.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writeback.test.d.ts","sourceRoot":"","sources":["../src/writeback.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { describe, it } from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { resolveWritebackRequest } from './writeback.js';
|
|
4
|
+
const PAGE_UUID = '2fd6800c-1c90-80ea-9ec8-fe4a0daa66b8';
|
|
5
|
+
const PAGE_HEX = PAGE_UUID.replace(/-/g, '');
|
|
6
|
+
describe('linear writeback', () => {
|
|
7
|
+
describe('comment create', () => {
|
|
8
|
+
it('creates a comment from plain-text content on a slug-form path', () => {
|
|
9
|
+
const req = resolveWritebackRequest(`/linear/issues/auth-refactor--${PAGE_HEX}/comments/new.json`, 'looks good, ship it');
|
|
10
|
+
assert.strictEqual(req.action, 'create_comment');
|
|
11
|
+
assert.strictEqual(req.method, 'POST');
|
|
12
|
+
assert.strictEqual(req.endpoint, '/graphql');
|
|
13
|
+
const input = req.body.variables.input;
|
|
14
|
+
assert.strictEqual(input.issueId, PAGE_UUID);
|
|
15
|
+
assert.strictEqual(input.body, 'looks good, ship it');
|
|
16
|
+
});
|
|
17
|
+
it('accepts a JSON object with a body field', () => {
|
|
18
|
+
const req = resolveWritebackRequest(`/linear/issues/auth-refactor--${PAGE_HEX}/comments/new.json`, JSON.stringify({ body: 'with metadata', doNotSubscribeToIssue: true }));
|
|
19
|
+
const input = req.body.variables.input;
|
|
20
|
+
assert.strictEqual(input.body, 'with metadata');
|
|
21
|
+
assert.strictEqual(input.doNotSubscribeToIssue, true);
|
|
22
|
+
});
|
|
23
|
+
it('rejects a missing body in JSON form', () => {
|
|
24
|
+
assert.throws(() => resolveWritebackRequest(`/linear/issues/auth-refactor--${PAGE_HEX}/comments/new.json`, '{}'), /requires a non-empty `body`/);
|
|
25
|
+
});
|
|
26
|
+
it('rejects legacy 8-char id suffix paths with a clear re-sync message', () => {
|
|
27
|
+
assert.throws(() => resolveWritebackRequest('/linear/issues/auth-refactor--2fd6800c/comments/new.json', 'hi'), /legacy 8-char id suffix.*relayfile pull/);
|
|
28
|
+
});
|
|
29
|
+
it('rejects team-prefixed identifiers with a clear UUID-required message', () => {
|
|
30
|
+
assert.throws(() => resolveWritebackRequest('/linear/issues/PROJ-441/comments/new.json', 'hi'), /team-prefixed identifier/);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe('issue create', () => {
|
|
34
|
+
it('creates an issue from a JSON payload', () => {
|
|
35
|
+
const req = resolveWritebackRequest('/linear/issues/new.json', JSON.stringify({ teamId: 'team-1', title: 'Audit log export', priority: 2 }));
|
|
36
|
+
assert.strictEqual(req.action, 'create_issue');
|
|
37
|
+
const input = req.body.variables.input;
|
|
38
|
+
assert.strictEqual(input.teamId, 'team-1');
|
|
39
|
+
assert.strictEqual(input.title, 'Audit log export');
|
|
40
|
+
assert.strictEqual(input.priority, 2);
|
|
41
|
+
});
|
|
42
|
+
it('rejects a missing teamId', () => {
|
|
43
|
+
assert.throws(() => resolveWritebackRequest('/linear/issues/new.json', JSON.stringify({ title: 'x' })), /requires a `teamId`/);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
describe('issue update', () => {
|
|
47
|
+
it('builds an issueUpdate mutation excluding server-managed fields', () => {
|
|
48
|
+
const req = resolveWritebackRequest(`/linear/issues/auth-refactor--${PAGE_HEX}.json`, JSON.stringify({
|
|
49
|
+
id: 'should-be-stripped',
|
|
50
|
+
identifier: 'PROJ-441',
|
|
51
|
+
createdAt: 'should-be-stripped',
|
|
52
|
+
title: 'New title',
|
|
53
|
+
description: 'New description',
|
|
54
|
+
}));
|
|
55
|
+
assert.strictEqual(req.action, 'update_issue');
|
|
56
|
+
const variables = req.body.variables;
|
|
57
|
+
assert.strictEqual(variables.id, PAGE_UUID);
|
|
58
|
+
assert.deepStrictEqual(variables.input, {
|
|
59
|
+
title: 'New title',
|
|
60
|
+
description: 'New description',
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
it('unwraps the synced envelope written by LinearAdapter.renderContent', () => {
|
|
64
|
+
// This is the exact shape an agent sees when it reads a synced
|
|
65
|
+
// /linear/issues/<id>.json file produced by LinearAdapter.renderContent.
|
|
66
|
+
// The agent edits payload.title and writes the whole envelope back; the
|
|
67
|
+
// resolver must NOT forward `provider`, `workspaceId`, etc. into the
|
|
68
|
+
// GraphQL IssueUpdateInput.
|
|
69
|
+
const req = resolveWritebackRequest(`/linear/issues/auth-refactor--${PAGE_HEX}.json`, JSON.stringify({
|
|
70
|
+
provider: 'linear',
|
|
71
|
+
connectionId: 'conn-1',
|
|
72
|
+
workspaceId: 'wks-1',
|
|
73
|
+
eventType: 'issue.updated',
|
|
74
|
+
objectType: 'issue',
|
|
75
|
+
objectId: PAGE_UUID,
|
|
76
|
+
deleted: false,
|
|
77
|
+
payload: {
|
|
78
|
+
id: PAGE_UUID,
|
|
79
|
+
identifier: 'PROJ-441',
|
|
80
|
+
title: 'Edited title',
|
|
81
|
+
description: 'Edited description',
|
|
82
|
+
priority: 1,
|
|
83
|
+
},
|
|
84
|
+
}));
|
|
85
|
+
const variables = req.body.variables;
|
|
86
|
+
assert.strictEqual(variables.id, PAGE_UUID);
|
|
87
|
+
// Only mutable fields from payload survive the denylist; envelope
|
|
88
|
+
// markers (provider, workspaceId, etc.) must not appear.
|
|
89
|
+
assert.deepStrictEqual(variables.input, {
|
|
90
|
+
title: 'Edited title',
|
|
91
|
+
description: 'Edited description',
|
|
92
|
+
priority: 1,
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
describe('unmatched paths', () => {
|
|
97
|
+
it('throws for unrecognized paths', () => {
|
|
98
|
+
assert.throws(() => resolveWritebackRequest('/linear/projects/foo.json', '{}'), /No Linear writeback rule matched/);
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
//# sourceMappingURL=writeback.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writeback.test.js","sourceRoot":"","sources":["../src/writeback.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,MAAM,SAAS,GAAG,sCAAsC,CAAC;AACzD,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAE7C,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;YACvE,MAAM,GAAG,GAAG,uBAAuB,CACjC,iCAAiC,QAAQ,oBAAoB,EAC7D,qBAAqB,CACtB,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YACjD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACvC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAI,GAAG,CAAC,IAAI,CAAC,SAA0D,CAAC,KAAK,CAAC;YACzF,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,GAAG,GAAG,uBAAuB,CACjC,iCAAiC,QAAQ,oBAAoB,EAC7D,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CACvE,CAAC;YACF,MAAM,KAAK,GAAI,GAAG,CAAC,IAAI,CAAC,SAEtB,CAAC,KAAK,CAAC;YACT,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;YAChD,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,CACH,uBAAuB,CACrB,iCAAiC,QAAQ,oBAAoB,EAC7D,IAAI,CACL,EACH,6BAA6B,CAC9B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;YAC5E,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,CACH,uBAAuB,CACrB,0DAA0D,EAC1D,IAAI,CACL,EACH,yCAAyC,CAC1C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;YAC9E,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,CAAC,uBAAuB,CAAC,2CAA2C,EAAE,IAAI,CAAC,EAChF,0BAA0B,CAC3B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,GAAG,GAAG,uBAAuB,CACjC,yBAAyB,EACzB,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAC7E,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YAC/C,MAAM,KAAK,GAAI,GAAG,CAAC,IAAI,CAAC,SAEtB,CAAC,KAAK,CAAC;YACT,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC3C,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;YACpD,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;YAClC,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,CAAC,uBAAuB,CAAC,yBAAyB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EACxF,qBAAqB,CACtB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;YACxE,MAAM,GAAG,GAAG,uBAAuB,CACjC,iCAAiC,QAAQ,OAAO,EAChD,IAAI,CAAC,SAAS,CAAC;gBACb,EAAE,EAAE,oBAAoB;gBACxB,UAAU,EAAE,UAAU;gBACtB,SAAS,EAAE,oBAAoB;gBAC/B,KAAK,EAAE,WAAW;gBAClB,WAAW,EAAE,iBAAiB;aAC/B,CAAC,CACH,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YAC/C,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,SAA2D,CAAC;YACvF,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YAC5C,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,EAAE;gBACtC,KAAK,EAAE,WAAW;gBAClB,WAAW,EAAE,iBAAiB;aAC/B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;YAC5E,+DAA+D;YAC/D,yEAAyE;YACzE,wEAAwE;YACxE,qEAAqE;YACrE,4BAA4B;YAC5B,MAAM,GAAG,GAAG,uBAAuB,CACjC,iCAAiC,QAAQ,OAAO,EAChD,IAAI,CAAC,SAAS,CAAC;gBACb,QAAQ,EAAE,QAAQ;gBAClB,YAAY,EAAE,QAAQ;gBACtB,WAAW,EAAE,OAAO;gBACpB,SAAS,EAAE,eAAe;gBAC1B,UAAU,EAAE,OAAO;gBACnB,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE;oBACP,EAAE,EAAE,SAAS;oBACb,UAAU,EAAE,UAAU;oBACtB,KAAK,EAAE,cAAc;oBACrB,WAAW,EAAE,oBAAoB;oBACjC,QAAQ,EAAE,CAAC;iBACZ;aACF,CAAC,CACH,CAAC;YACF,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,SAA2D,CAAC;YACvF,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YAC5C,kEAAkE;YAClE,yDAAyD;YACzD,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,EAAE;gBACtC,KAAK,EAAE,cAAc;gBACrB,WAAW,EAAE,oBAAoB;gBACjC,QAAQ,EAAE,CAAC;aACZ,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,CAAC,uBAAuB,CAAC,2BAA2B,EAAE,IAAI,CAAC,EAChE,kCAAkC,CACnC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@relayfile/adapter-linear",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.16",
|
|
4
4
|
"description": "Linear adapter bootstrap package for Relayfile",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -15,6 +15,16 @@
|
|
|
15
15
|
"types": "./dist/path-mapper.d.ts",
|
|
16
16
|
"import": "./dist/path-mapper.js",
|
|
17
17
|
"default": "./dist/path-mapper.js"
|
|
18
|
+
},
|
|
19
|
+
"./writeback": {
|
|
20
|
+
"types": "./dist/writeback.d.ts",
|
|
21
|
+
"import": "./dist/writeback.js",
|
|
22
|
+
"default": "./dist/writeback.js"
|
|
23
|
+
},
|
|
24
|
+
"./types": {
|
|
25
|
+
"types": "./dist/types.d.ts",
|
|
26
|
+
"import": "./dist/types.js",
|
|
27
|
+
"default": "./dist/types.js"
|
|
18
28
|
}
|
|
19
29
|
},
|
|
20
30
|
"files": [
|