@relayfile/adapter-core 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.
Files changed (140) hide show
  1. package/README.md +89 -0
  2. package/dist/src/cli.d.ts +3 -0
  3. package/dist/src/cli.d.ts.map +1 -0
  4. package/dist/src/cli.js +430 -0
  5. package/dist/src/cli.js.map +1 -0
  6. package/dist/src/docs/change-detector.d.ts +23 -0
  7. package/dist/src/docs/change-detector.d.ts.map +1 -0
  8. package/dist/src/docs/change-detector.js +126 -0
  9. package/dist/src/docs/change-detector.js.map +1 -0
  10. package/dist/src/docs/crawler.d.ts +22 -0
  11. package/dist/src/docs/crawler.d.ts.map +1 -0
  12. package/dist/src/docs/crawler.js +296 -0
  13. package/dist/src/docs/crawler.js.map +1 -0
  14. package/dist/src/docs/extractor.d.ts +12 -0
  15. package/dist/src/docs/extractor.d.ts.map +1 -0
  16. package/dist/src/docs/extractor.js +549 -0
  17. package/dist/src/docs/extractor.js.map +1 -0
  18. package/dist/src/docs/generator.d.ts +14 -0
  19. package/dist/src/docs/generator.d.ts.map +1 -0
  20. package/dist/src/docs/generator.js +368 -0
  21. package/dist/src/docs/generator.js.map +1 -0
  22. package/dist/src/docs/mapping-generator.d.ts +13 -0
  23. package/dist/src/docs/mapping-generator.d.ts.map +1 -0
  24. package/dist/src/docs/mapping-generator.js +104 -0
  25. package/dist/src/docs/mapping-generator.js.map +1 -0
  26. package/dist/src/docs/types.d.ts +110 -0
  27. package/dist/src/docs/types.d.ts.map +1 -0
  28. package/dist/src/docs/types.js +2 -0
  29. package/dist/src/docs/types.js.map +1 -0
  30. package/dist/src/docs/updater.d.ts +11 -0
  31. package/dist/src/docs/updater.d.ts.map +1 -0
  32. package/dist/src/docs/updater.js +133 -0
  33. package/dist/src/docs/updater.js.map +1 -0
  34. package/dist/src/drift/drift-checker.d.ts +13 -0
  35. package/dist/src/drift/drift-checker.d.ts.map +1 -0
  36. package/dist/src/drift/drift-checker.js +200 -0
  37. package/dist/src/drift/drift-checker.js.map +1 -0
  38. package/dist/src/generate/adapter-generator.d.ts +4 -0
  39. package/dist/src/generate/adapter-generator.d.ts.map +1 -0
  40. package/dist/src/generate/adapter-generator.js +115 -0
  41. package/dist/src/generate/adapter-generator.js.map +1 -0
  42. package/dist/src/generate/types-generator.d.ts +3 -0
  43. package/dist/src/generate/types-generator.d.ts.map +1 -0
  44. package/dist/src/generate/types-generator.js +105 -0
  45. package/dist/src/generate/types-generator.js.map +1 -0
  46. package/dist/src/index.d.ts +22 -0
  47. package/dist/src/index.d.ts.map +1 -0
  48. package/dist/src/index.js +21 -0
  49. package/dist/src/index.js.map +1 -0
  50. package/dist/src/ingest/index.d.ts +4 -0
  51. package/dist/src/ingest/index.d.ts.map +1 -0
  52. package/dist/src/ingest/index.js +34 -0
  53. package/dist/src/ingest/index.js.map +1 -0
  54. package/dist/src/ingest/openapi.d.ts +8 -0
  55. package/dist/src/ingest/openapi.d.ts.map +1 -0
  56. package/dist/src/ingest/openapi.js +187 -0
  57. package/dist/src/ingest/openapi.js.map +1 -0
  58. package/dist/src/ingest/postman.d.ts +3 -0
  59. package/dist/src/ingest/postman.d.ts.map +1 -0
  60. package/dist/src/ingest/postman.js +14 -0
  61. package/dist/src/ingest/postman.js.map +1 -0
  62. package/dist/src/ingest/sample.d.ts +4 -0
  63. package/dist/src/ingest/sample.d.ts.map +1 -0
  64. package/dist/src/ingest/sample.js +72 -0
  65. package/dist/src/ingest/sample.js.map +1 -0
  66. package/dist/src/ingest/shared.d.ts +6 -0
  67. package/dist/src/ingest/shared.d.ts.map +1 -0
  68. package/dist/src/ingest/shared.js +52 -0
  69. package/dist/src/ingest/shared.js.map +1 -0
  70. package/dist/src/ingest/types.d.ts +44 -0
  71. package/dist/src/ingest/types.d.ts.map +1 -0
  72. package/dist/src/ingest/types.js +2 -0
  73. package/dist/src/ingest/types.js.map +1 -0
  74. package/dist/src/runtime/schema-adapter.d.ts +71 -0
  75. package/dist/src/runtime/schema-adapter.d.ts.map +1 -0
  76. package/dist/src/runtime/schema-adapter.js +887 -0
  77. package/dist/src/runtime/schema-adapter.js.map +1 -0
  78. package/dist/src/spec/parser.d.ts +9 -0
  79. package/dist/src/spec/parser.d.ts.map +1 -0
  80. package/dist/src/spec/parser.js +371 -0
  81. package/dist/src/spec/parser.js.map +1 -0
  82. package/dist/src/spec/template.d.ts +8 -0
  83. package/dist/src/spec/template.d.ts.map +1 -0
  84. package/dist/src/spec/template.js +75 -0
  85. package/dist/src/spec/template.js.map +1 -0
  86. package/dist/src/spec/types.d.ts +88 -0
  87. package/dist/src/spec/types.d.ts.map +1 -0
  88. package/dist/src/spec/types.js +2 -0
  89. package/dist/src/spec/types.js.map +1 -0
  90. package/dist/tests/docs/change-detector.test.d.ts +2 -0
  91. package/dist/tests/docs/change-detector.test.d.ts.map +1 -0
  92. package/dist/tests/docs/change-detector.test.js +24 -0
  93. package/dist/tests/docs/change-detector.test.js.map +1 -0
  94. package/dist/tests/docs/crawler.test.d.ts +2 -0
  95. package/dist/tests/docs/crawler.test.d.ts.map +1 -0
  96. package/dist/tests/docs/crawler.test.js +55 -0
  97. package/dist/tests/docs/crawler.test.js.map +1 -0
  98. package/dist/tests/docs/extractor.test.d.ts +2 -0
  99. package/dist/tests/docs/extractor.test.d.ts.map +1 -0
  100. package/dist/tests/docs/extractor.test.js +63 -0
  101. package/dist/tests/docs/extractor.test.js.map +1 -0
  102. package/dist/tests/docs/generator.test.d.ts +2 -0
  103. package/dist/tests/docs/generator.test.d.ts.map +1 -0
  104. package/dist/tests/docs/generator.test.js +46 -0
  105. package/dist/tests/docs/generator.test.js.map +1 -0
  106. package/dist/tests/drift/drift-checker.test.d.ts +2 -0
  107. package/dist/tests/drift/drift-checker.test.d.ts.map +1 -0
  108. package/dist/tests/drift/drift-checker.test.js +59 -0
  109. package/dist/tests/drift/drift-checker.test.js.map +1 -0
  110. package/dist/tests/round-trip/fake-connection.d.ts +29 -0
  111. package/dist/tests/round-trip/fake-connection.d.ts.map +1 -0
  112. package/dist/tests/round-trip/fake-connection.js +174 -0
  113. package/dist/tests/round-trip/fake-connection.js.map +1 -0
  114. package/dist/tests/round-trip/github-pulls.test.d.ts +2 -0
  115. package/dist/tests/round-trip/github-pulls.test.d.ts.map +1 -0
  116. package/dist/tests/round-trip/github-pulls.test.js +12 -0
  117. package/dist/tests/round-trip/github-pulls.test.js.map +1 -0
  118. package/dist/tests/round-trip/harness.d.ts +74 -0
  119. package/dist/tests/round-trip/harness.d.ts.map +1 -0
  120. package/dist/tests/round-trip/harness.js +323 -0
  121. package/dist/tests/round-trip/harness.js.map +1 -0
  122. package/dist/tests/round-trip/vfs-snapshot.d.ts +45 -0
  123. package/dist/tests/round-trip/vfs-snapshot.d.ts.map +1 -0
  124. package/dist/tests/round-trip/vfs-snapshot.js +218 -0
  125. package/dist/tests/round-trip/vfs-snapshot.js.map +1 -0
  126. package/dist/tests/runtime/schema-adapter.sync.test.d.ts +2 -0
  127. package/dist/tests/runtime/schema-adapter.sync.test.d.ts.map +1 -0
  128. package/dist/tests/runtime/schema-adapter.sync.test.js +962 -0
  129. package/dist/tests/runtime/schema-adapter.sync.test.js.map +1 -0
  130. package/dist/tests/runtime/schema-adapter.test.d.ts +2 -0
  131. package/dist/tests/runtime/schema-adapter.test.d.ts.map +1 -0
  132. package/dist/tests/runtime/schema-adapter.test.js +100 -0
  133. package/dist/tests/runtime/schema-adapter.test.js.map +1 -0
  134. package/dist/tests/spec/parser.test.d.ts +2 -0
  135. package/dist/tests/spec/parser.test.d.ts.map +1 -0
  136. package/dist/tests/spec/parser.test.js +248 -0
  137. package/dist/tests/spec/parser.test.js.map +1 -0
  138. package/mappings/github.mapping.yaml +35 -0
  139. package/mappings/slack.mapping.yaml +18 -0
  140. package/package.json +52 -0
@@ -0,0 +1,21 @@
1
+ export * from "./spec/types.js";
2
+ export * from "./spec/template.js";
3
+ export * from "./spec/parser.js";
4
+ export * from "./ingest/types.js";
5
+ export * from "./ingest/index.js";
6
+ export * from "./ingest/openapi.js";
7
+ export * from "./ingest/postman.js";
8
+ export * from "./ingest/sample.js";
9
+ export * from "./runtime/schema-adapter.js";
10
+ export * from "./generate/adapter-generator.js";
11
+ export * from "./generate/types-generator.js";
12
+ export * from "./drift/drift-checker.js";
13
+ export * from "./docs/types.js";
14
+ export * from "./docs/crawler.js";
15
+ export * from "./docs/extractor.js";
16
+ export * from "./docs/generator.js";
17
+ export * from "./docs/mapping-generator.js";
18
+ export * from "./docs/change-detector.js";
19
+ export * from "./docs/updater.js";
20
+ export { IntegrationAdapter } from "@relayfile/sdk";
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { MappingSpec } from "../spec/types.js";
2
+ import type { ServiceSpec } from "./types.js";
3
+ export declare function loadServiceSpecFromMapping(spec: MappingSpec, cwd?: string): Promise<ServiceSpec>;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ingest/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAOpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,WAAW,EACjB,GAAG,SAAgB,GAClB,OAAO,CAAC,WAAW,CAAC,CA2BtB"}
@@ -0,0 +1,34 @@
1
+ import { DocsCrawler } from "../docs/crawler.js";
2
+ import { APIExtractor } from "../docs/extractor.js";
3
+ import { SpecGenerator } from "../docs/generator.js";
4
+ import { loadOpenApiSpec, openApiDocumentToServiceSpec, } from "./openapi.js";
5
+ import { loadPostmanSpec } from "./postman.js";
6
+ import { loadSampleSpec } from "./sample.js";
7
+ export async function loadServiceSpecFromMapping(spec, cwd = process.cwd()) {
8
+ if (spec.adapter.source.openapi) {
9
+ return loadOpenApiSpec(spec.adapter.source.openapi, cwd);
10
+ }
11
+ if (spec.adapter.source.postman) {
12
+ return loadPostmanSpec(spec.adapter.source.postman, cwd);
13
+ }
14
+ if (spec.adapter.source.samples) {
15
+ return loadSampleSpec(spec.adapter.source.samples, cwd);
16
+ }
17
+ if (spec.adapter.source.docs) {
18
+ const pages = await new DocsCrawler(spec.adapter.source.docs).crawl();
19
+ const extracted = await new APIExtractor(spec.adapter.source.llm).extract(pages);
20
+ const document = new SpecGenerator().generateDocument(extracted, {
21
+ apiName: spec.adapter.name,
22
+ apiVersion: spec.adapter.version,
23
+ docsSource: spec.adapter.source.docs,
24
+ sync: spec.adapter.source.sync,
25
+ llm: spec.adapter.source.llm,
26
+ });
27
+ return openApiDocumentToServiceSpec(document, {
28
+ sourceKind: "docs",
29
+ sourceLocation: spec.adapter.source.docs.url,
30
+ });
31
+ }
32
+ throw new Error("Mapping spec does not define a supported source");
33
+ }
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ingest/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EACL,eAAe,EACf,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,IAAiB,EACjB,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAEnB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACtE,MAAM,SAAS,GAAG,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjF,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE;YAC/D,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YAC1B,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAChC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI;YACpC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI;YAC9B,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG;SAC7B,CAAC,CAAC;QACH,OAAO,4BAA4B,CAAC,QAAQ,EAAE;YAC5C,UAAU,EAAE,MAAM;YAClB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACrE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { SchemaNode, ServiceSpec } from "./types.js";
2
+ export declare function loadOpenApiSpec(location: string, cwd?: string): Promise<ServiceSpec>;
3
+ export declare function openApiDocumentToServiceSpec(document: Record<string, unknown>, options: {
4
+ sourceKind: ServiceSpec["sourceKind"];
5
+ sourceLocation: string;
6
+ }): ServiceSpec;
7
+ export declare function normalizeSchemaNode(input: unknown): SchemaNode;
8
+ //# sourceMappingURL=openapi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../../src/ingest/openapi.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAIV,UAAU,EACV,WAAW,EACZ,MAAM,YAAY,CAAC;AAIpB,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,GAAG,SAAgB,GAClB,OAAO,CAAC,WAAW,CAAC,CAStB;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,OAAO,EAAE;IACP,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;CACxB,GACA,WAAW,CAkBb;AAmJD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CA0C9D"}
@@ -0,0 +1,187 @@
1
+ import { asRecord, firstJsonContent, parseStructuredText, readSourceText, } from "./shared.js";
2
+ const METHODS = ["DELETE", "GET", "PATCH", "POST", "PUT"];
3
+ export async function loadOpenApiSpec(location, cwd = process.cwd()) {
4
+ const text = await readSourceText(location, cwd);
5
+ const parsed = parseStructuredText(text, location);
6
+ const document = asRecord(parsed, "OpenAPI document");
7
+ return openApiDocumentToServiceSpec(document, {
8
+ sourceKind: "openapi",
9
+ sourceLocation: location,
10
+ });
11
+ }
12
+ export function openApiDocumentToServiceSpec(document, options) {
13
+ const info = asOptionalRecord(document.info);
14
+ const title = typeof info?.title === "string" ? info.title : "Unknown API";
15
+ const version = typeof info?.version === "string" ? info.version : "0.0.0";
16
+ const schemas = collectSchemas(document);
17
+ const endpoints = collectEndpoints(document);
18
+ const webhookSchemas = collectWebhookSchemas(document);
19
+ return {
20
+ title,
21
+ version,
22
+ sourceKind: options.sourceKind,
23
+ sourceLocation: options.sourceLocation,
24
+ endpoints,
25
+ schemas,
26
+ webhookSchemas,
27
+ raw: document,
28
+ };
29
+ }
30
+ function collectSchemas(document) {
31
+ const components = asOptionalRecord(document.components);
32
+ const schemasValue = asOptionalRecord(components?.schemas);
33
+ const schemas = {};
34
+ if (!schemasValue) {
35
+ return schemas;
36
+ }
37
+ for (const [name, rawSchema] of Object.entries(schemasValue)) {
38
+ schemas[name] = normalizeSchemaNode(rawSchema);
39
+ }
40
+ return schemas;
41
+ }
42
+ function collectEndpoints(document) {
43
+ const pathsValue = asOptionalRecord(document.paths);
44
+ if (!pathsValue) {
45
+ return [];
46
+ }
47
+ const endpoints = [];
48
+ for (const [path, pathEntry] of Object.entries(pathsValue)) {
49
+ const pathObject = asOptionalRecord(pathEntry);
50
+ if (!pathObject) {
51
+ continue;
52
+ }
53
+ const pathParameters = readParameters(pathObject.parameters);
54
+ for (const method of METHODS) {
55
+ const operationValue = pathObject[method.toLowerCase()];
56
+ const operation = asOptionalRecord(operationValue);
57
+ if (!operation) {
58
+ continue;
59
+ }
60
+ const operationId = typeof operation.operationId === "string"
61
+ ? operation.operationId
62
+ : `${method}_${path}`.replace(/[^\w]+/g, "_");
63
+ const requestBody = asOptionalRecord(operation.requestBody);
64
+ const requestContent = firstJsonContent(asOptionalRecord(requestBody?.content));
65
+ const responses = asOptionalRecord(operation.responses);
66
+ const responseSchema = readPrimaryResponseSchema(responses);
67
+ endpoints.push({
68
+ key: `${method} ${path}`,
69
+ operationId,
70
+ method,
71
+ path,
72
+ summary: typeof operation.summary === "string" ? operation.summary : undefined,
73
+ requestSchema: requestContent ? normalizeSchemaNode(requestContent.schema) : undefined,
74
+ responseSchema,
75
+ parameters: [...pathParameters, ...readParameters(operation.parameters)],
76
+ });
77
+ }
78
+ }
79
+ return endpoints;
80
+ }
81
+ function collectWebhookSchemas(document) {
82
+ const webhooks = asOptionalRecord(document.webhooks) ??
83
+ asOptionalRecord(document["x-webhooks"]);
84
+ if (!webhooks) {
85
+ return {};
86
+ }
87
+ const output = {};
88
+ for (const [eventName, rawWebhook] of Object.entries(webhooks)) {
89
+ const webhook = asOptionalRecord(rawWebhook);
90
+ if (!webhook) {
91
+ continue;
92
+ }
93
+ for (const method of METHODS) {
94
+ const operation = asOptionalRecord(webhook[method.toLowerCase()]);
95
+ if (!operation) {
96
+ continue;
97
+ }
98
+ const requestBody = asOptionalRecord(operation.requestBody);
99
+ const requestContent = firstJsonContent(asOptionalRecord(requestBody?.content));
100
+ if (requestContent?.schema) {
101
+ output[eventName] = normalizeSchemaNode(requestContent.schema);
102
+ break;
103
+ }
104
+ }
105
+ }
106
+ return output;
107
+ }
108
+ function readParameters(value) {
109
+ if (!Array.isArray(value)) {
110
+ return [];
111
+ }
112
+ const output = [];
113
+ for (const item of value) {
114
+ const parameter = asOptionalRecord(item);
115
+ if (!parameter || typeof parameter.name !== "string" || typeof parameter.in !== "string") {
116
+ continue;
117
+ }
118
+ output.push({
119
+ name: parameter.name,
120
+ in: parameter.in,
121
+ required: parameter.required === true,
122
+ schema: parameter.schema ? normalizeSchemaNode(parameter.schema) : undefined,
123
+ });
124
+ }
125
+ return output;
126
+ }
127
+ function readPrimaryResponseSchema(responses) {
128
+ if (!responses) {
129
+ return undefined;
130
+ }
131
+ const preferredKeys = Object.keys(responses).sort((left, right) => {
132
+ const leftScore = left.startsWith("2") ? 0 : 1;
133
+ const rightScore = right.startsWith("2") ? 0 : 1;
134
+ return leftScore - rightScore || left.localeCompare(right);
135
+ });
136
+ for (const key of preferredKeys) {
137
+ const response = asOptionalRecord(responses[key]);
138
+ const content = firstJsonContent(asOptionalRecord(response?.content));
139
+ if (content?.schema) {
140
+ return normalizeSchemaNode(content.schema);
141
+ }
142
+ }
143
+ return undefined;
144
+ }
145
+ export function normalizeSchemaNode(input) {
146
+ const value = asOptionalRecord(input);
147
+ if (!value) {
148
+ return { raw: {} };
149
+ }
150
+ if (typeof value.$ref === "string") {
151
+ return {
152
+ ref: value.$ref,
153
+ raw: value,
154
+ };
155
+ }
156
+ const properties = asOptionalRecord(value.properties);
157
+ const additionalProperties = value.additionalProperties;
158
+ return {
159
+ type: typeof value.type === "string" ? value.type : undefined,
160
+ format: typeof value.format === "string" ? value.format : undefined,
161
+ description: typeof value.description === "string" ? value.description : undefined,
162
+ enum: Array.isArray(value.enum) ? [...value.enum] : undefined,
163
+ nullable: value.nullable === true,
164
+ required: Array.isArray(value.required)
165
+ ? value.required.filter((item) => typeof item === "string")
166
+ : undefined,
167
+ properties: properties
168
+ ? Object.fromEntries(Object.entries(properties).map(([key, property]) => [key, normalizeSchemaNode(property)]))
169
+ : undefined,
170
+ items: value.items ? normalizeSchemaNode(value.items) : undefined,
171
+ anyOf: Array.isArray(value.anyOf) ? value.anyOf.map(normalizeSchemaNode) : undefined,
172
+ oneOf: Array.isArray(value.oneOf) ? value.oneOf.map(normalizeSchemaNode) : undefined,
173
+ allOf: Array.isArray(value.allOf) ? value.allOf.map(normalizeSchemaNode) : undefined,
174
+ additionalProperties: typeof additionalProperties === "boolean"
175
+ ? additionalProperties
176
+ : additionalProperties
177
+ ? normalizeSchemaNode(additionalProperties)
178
+ : undefined,
179
+ raw: value,
180
+ };
181
+ }
182
+ function asOptionalRecord(value) {
183
+ return typeof value === "object" && value !== null && !Array.isArray(value)
184
+ ? value
185
+ : undefined;
186
+ }
187
+ //# sourceMappingURL=openapi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../../src/ingest/openapi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ServiceSpec } from "./types.js";
2
+ export declare function loadPostmanSpec(location: string, cwd?: string): Promise<ServiceSpec>;
3
+ //# sourceMappingURL=postman.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postman.d.ts","sourceRoot":"","sources":["../../../src/ingest/postman.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,GAAG,SAAgB,GAClB,OAAO,CAAC,WAAW,CAAC,CAUtB"}
@@ -0,0 +1,14 @@
1
+ import { convert } from "@scalar/postman-to-openapi";
2
+ import { openApiDocumentToServiceSpec } from "./openapi.js";
3
+ import { asRecord, parseStructuredText, readSourceText } from "./shared.js";
4
+ export async function loadPostmanSpec(location, cwd = process.cwd()) {
5
+ const text = await readSourceText(location, cwd);
6
+ const parsed = parseStructuredText(text, location);
7
+ const collection = asRecord(parsed, "Postman collection");
8
+ const document = asRecord(convert(collection), "Converted OpenAPI document");
9
+ return openApiDocumentToServiceSpec(document, {
10
+ sourceKind: "postman",
11
+ sourceLocation: location,
12
+ });
13
+ }
14
+ //# sourceMappingURL=postman.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postman.js","sourceRoot":"","sources":["../../../src/ingest/postman.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG5E,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAEnB,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAiB,CAAC,EAAE,4BAA4B,CAAC,CAAC;IAEpF,OAAO,4BAA4B,CAAC,QAAQ,EAAE;QAC5C,UAAU,EAAE,SAAS;QACrB,cAAc,EAAE,QAAQ;KACzB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { SchemaNode, ServiceSpec } from "./types.js";
2
+ export declare function loadSampleSpec(source: string | string[], cwd?: string): Promise<ServiceSpec>;
3
+ export declare function inferSchemaFromSample(value: unknown): SchemaNode;
4
+ //# sourceMappingURL=sample.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sample.d.ts","sourceRoot":"","sources":["../../../src/ingest/sample.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1D,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EACzB,GAAG,SAAgB,GAClB,OAAO,CAAC,WAAW,CAAC,CAoBtB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAoChE"}
@@ -0,0 +1,72 @@
1
+ import { basename } from "node:path";
2
+ import { normalizeSchemaNode } from "./openapi.js";
3
+ import { readSourceText } from "./shared.js";
4
+ export async function loadSampleSpec(source, cwd = process.cwd()) {
5
+ const samplePaths = Array.isArray(source) ? source : [source];
6
+ const webhookSchemas = {};
7
+ for (const samplePath of samplePaths) {
8
+ const text = await readSourceText(samplePath, cwd);
9
+ const parsed = JSON.parse(text);
10
+ const eventName = inferEventName(parsed, samplePath);
11
+ webhookSchemas[eventName] = inferSchemaFromSample(parsed);
12
+ }
13
+ return {
14
+ title: "Webhook Samples",
15
+ version: "0.0.0",
16
+ sourceKind: "samples",
17
+ sourceLocation: samplePaths.join(","),
18
+ endpoints: [],
19
+ schemas: {},
20
+ webhookSchemas,
21
+ };
22
+ }
23
+ export function inferSchemaFromSample(value) {
24
+ if (value === null) {
25
+ return { type: "null", raw: { type: "null" } };
26
+ }
27
+ if (Array.isArray(value)) {
28
+ return normalizeSchemaNode({
29
+ type: "array",
30
+ items: value.length > 0 ? inferSchemaFromSample(value[0]).raw ?? {} : {},
31
+ });
32
+ }
33
+ if (typeof value === "string") {
34
+ return normalizeSchemaNode({ type: "string" });
35
+ }
36
+ if (typeof value === "number") {
37
+ return normalizeSchemaNode({
38
+ type: Number.isInteger(value) ? "integer" : "number",
39
+ });
40
+ }
41
+ if (typeof value === "boolean") {
42
+ return normalizeSchemaNode({ type: "boolean" });
43
+ }
44
+ if (typeof value === "object") {
45
+ const properties = Object.fromEntries(Object.entries(value).map(([key, child]) => [
46
+ key,
47
+ inferSchemaFromSample(child).raw ?? {},
48
+ ]));
49
+ return normalizeSchemaNode({
50
+ type: "object",
51
+ properties,
52
+ required: Object.keys(value),
53
+ });
54
+ }
55
+ return normalizeSchemaNode({});
56
+ }
57
+ function inferEventName(value, samplePath) {
58
+ if (typeof value === "object" && value !== null) {
59
+ const record = value;
60
+ if (typeof record.event === "object" && record.event !== null) {
61
+ const eventType = record.event.type;
62
+ if (typeof eventType === "string" && eventType.trim()) {
63
+ return eventType;
64
+ }
65
+ }
66
+ if (typeof record.type === "string" && record.type.trim()) {
67
+ return record.type;
68
+ }
69
+ }
70
+ return basename(samplePath).replace(/\.(json|ya?ml)$/i, "");
71
+ }
72
+ //# sourceMappingURL=sample.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sample.js","sourceRoot":"","sources":["../../../src/ingest/sample.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function isHttpUrl(value: string): boolean;
2
+ export declare function readSourceText(location: string, cwd?: string): Promise<string>;
3
+ export declare function parseStructuredText(text: string, location?: string): unknown;
4
+ export declare function asRecord(value: unknown, label: string): Record<string, unknown>;
5
+ export declare function firstJsonContent(content: Record<string, unknown> | undefined): Record<string, unknown> | undefined;
6
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/ingest/shared.ts"],"names":[],"mappings":"AAIA,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,GAAG,SAAgB,GAClB,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAa,GACpB,OAAO,CAWT;AAED,wBAAgB,QAAQ,CACtB,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,GACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKzB;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC3C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAiBrC"}
@@ -0,0 +1,52 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { resolve } from "node:path";
3
+ import YAML from "yaml";
4
+ export function isHttpUrl(value) {
5
+ return /^https?:\/\//i.test(value);
6
+ }
7
+ export async function readSourceText(location, cwd = process.cwd()) {
8
+ if (isHttpUrl(location)) {
9
+ const response = await fetch(location);
10
+ if (!response.ok) {
11
+ throw new Error(`Failed to fetch ${location}: ${response.status} ${response.statusText}`);
12
+ }
13
+ return response.text();
14
+ }
15
+ return readFile(resolve(cwd, location), "utf8");
16
+ }
17
+ export function parseStructuredText(text, location = "<inline>") {
18
+ try {
19
+ return JSON.parse(text);
20
+ }
21
+ catch {
22
+ try {
23
+ return YAML.parse(text);
24
+ }
25
+ catch (error) {
26
+ const message = error instanceof Error ? error.message : String(error);
27
+ throw new Error(`Failed to parse ${location}: ${message}`);
28
+ }
29
+ }
30
+ }
31
+ export function asRecord(value, label) {
32
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
33
+ throw new Error(`${label} must be an object`);
34
+ }
35
+ return value;
36
+ }
37
+ export function firstJsonContent(content) {
38
+ if (!content) {
39
+ return undefined;
40
+ }
41
+ const preferred = content["application/json"];
42
+ if (preferred && typeof preferred === "object" && preferred !== null) {
43
+ return preferred;
44
+ }
45
+ for (const value of Object.values(content)) {
46
+ if (typeof value === "object" && value !== null) {
47
+ return value;
48
+ }
49
+ }
50
+ return undefined;
51
+ }
52
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/ingest/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAEnB,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,QAAQ,GAAG,UAAU;IAErB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,KAAc,EACd,KAAa;IAEb,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,KAAgC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,OAA4C;IAE5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC9C,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACrE,OAAO,SAAoC,CAAC;IAC9C,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,OAAO,KAAgC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,44 @@
1
+ export type HttpMethod = "DELETE" | "GET" | "PATCH" | "POST" | "PUT";
2
+ export interface SchemaNode {
3
+ ref?: string;
4
+ type?: string;
5
+ format?: string;
6
+ description?: string;
7
+ enum?: unknown[];
8
+ nullable?: boolean;
9
+ required?: string[];
10
+ properties?: Record<string, SchemaNode>;
11
+ items?: SchemaNode;
12
+ anyOf?: SchemaNode[];
13
+ oneOf?: SchemaNode[];
14
+ allOf?: SchemaNode[];
15
+ additionalProperties?: boolean | SchemaNode;
16
+ raw?: Record<string, unknown>;
17
+ }
18
+ export interface EndpointParameter {
19
+ name: string;
20
+ in: string;
21
+ required: boolean;
22
+ schema?: SchemaNode;
23
+ }
24
+ export interface EndpointSpec {
25
+ key: string;
26
+ operationId: string;
27
+ method: HttpMethod;
28
+ path: string;
29
+ summary?: string;
30
+ requestSchema?: SchemaNode;
31
+ responseSchema?: SchemaNode;
32
+ parameters: EndpointParameter[];
33
+ }
34
+ export interface ServiceSpec {
35
+ title: string;
36
+ version: string;
37
+ sourceKind: "docs" | "openapi" | "postman" | "samples";
38
+ sourceLocation: string;
39
+ endpoints: EndpointSpec[];
40
+ schemas: Record<string, SchemaNode>;
41
+ webhookSchemas: Record<string, SchemaNode>;
42
+ raw?: Record<string, unknown>;
43
+ }
44
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ingest/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,KAAK,GACL,OAAO,GACP,MAAM,GACN,KAAK,CAAC;AAEV,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,UAAU,EAAE,iBAAiB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACpC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ingest/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,71 @@
1
+ import { IntegrationAdapter, type ConnectionProvider, type FileSemantics, type ProxyResponse, type RelayFileClient } from "@relayfile/sdk";
2
+ import type { AdapterWebhook, IngestResult, SyncOptions, SyncResult } from "@relayfile/sdk";
3
+ import type { MappingSpec, ResourceMapping, WebhookMapping, WritebackMapping } from "../spec/types.js";
4
+ export interface MatchedWriteback {
5
+ name: string;
6
+ mapping: WritebackMapping;
7
+ method: "DELETE" | "GET" | "PATCH" | "POST" | "PUT";
8
+ endpointPath: string;
9
+ params: Record<string, string>;
10
+ }
11
+ export interface SchemaAdapterOptions {
12
+ client: RelayFileClient;
13
+ provider: ConnectionProvider;
14
+ spec: MappingSpec;
15
+ defaultConnectionId?: string;
16
+ resolveConnectionId?: (context: {
17
+ workspaceId: string;
18
+ path: string;
19
+ content: string;
20
+ parsedContent?: unknown;
21
+ match: MatchedWriteback;
22
+ }) => Promise<string> | string;
23
+ }
24
+ export interface SchemaSyncOptions extends SyncOptions {
25
+ workspaceId?: string;
26
+ resourceName?: string;
27
+ connectionId?: string;
28
+ resume?: boolean;
29
+ maxPages?: number;
30
+ since?: string;
31
+ watermark?: string;
32
+ sinceParamName?: string;
33
+ watermarkParamName?: string;
34
+ input?: Record<string, unknown>;
35
+ params?: Record<string, unknown>;
36
+ query?: Record<string, unknown>;
37
+ }
38
+ export interface SchemaResourceSyncOptions extends SchemaSyncOptions {
39
+ workspaceId: string;
40
+ }
41
+ export { IntegrationAdapter } from "@relayfile/sdk";
42
+ export type { AdapterWebhook, AdapterWebhookMetadata, IngestError, IngestResult, } from "@relayfile/sdk";
43
+ export declare class SchemaAdapter extends IntegrationAdapter {
44
+ readonly name: string;
45
+ readonly version: string;
46
+ private readonly spec;
47
+ private readonly defaultConnectionId?;
48
+ private readonly resolveConnectionIdFn?;
49
+ constructor(options: SchemaAdapterOptions);
50
+ computePath(objectType: string, objectId: string): string;
51
+ computeWebhookPath(event: AdapterWebhook): string;
52
+ computeResourcePath(resourceName: string, input: Record<string, unknown>): string;
53
+ normalizePayload(event: AdapterWebhook, mapping?: WebhookMapping | ResourceMapping): Record<string, unknown>;
54
+ computeSemantics(objectType: string, objectId: string, payload: Record<string, unknown>): FileSemantics;
55
+ supportedEvents(): string[];
56
+ sync(resourceName: string, options: SchemaResourceSyncOptions): Promise<SyncResult>;
57
+ sync(workspaceId: string, options?: SchemaSyncOptions): Promise<SyncResult>;
58
+ sync(workspaceId: string, resourceName: string, options?: SchemaSyncOptions): Promise<SyncResult>;
59
+ ingestWebhook(workspaceId: string, event: AdapterWebhook): Promise<IngestResult>;
60
+ matchWriteback(path: string): MatchedWriteback | null;
61
+ handleWriteback(workspaceId: string, path: string, content: string): Promise<ProxyResponse>;
62
+ writeBack(workspaceId: string, path: string, content: string): Promise<void>;
63
+ private resolveWebhookMapping;
64
+ private resolveConnectionId;
65
+ private resolveSyncInvocation;
66
+ private resolveSyncConnectionId;
67
+ private readSyncCheckpoint;
68
+ private writeSyncCheckpoint;
69
+ private resolveBaseRevision;
70
+ }
71
+ //# sourceMappingURL=schema-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-adapter.d.ts","sourceRoot":"","sources":["../../../src/runtime/schema-adapter.ts"],"names":[],"mappings":"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"}