Skip to content

Commit

Permalink
UploadTracks
Browse files Browse the repository at this point in the history
  • Loading branch information
stefanoverna committed May 2, 2024
1 parent 1797aa6 commit 4d60d5e
Show file tree
Hide file tree
Showing 17 changed files with 1,960 additions and 326 deletions.
23 changes: 13 additions & 10 deletions generate/extractInfoFromSchema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,12 @@ export type EndpointInfo = {
method: string;
comment: string;
docUrl?: string;
urlPlaceholder?: {
urlPlaceholders: Array<{
variableName: string;
isEntityId: boolean;
relType: string;
}>;
entityIdPlaceholder?: {
variableName: string;
isEntityId: boolean;
relType: string;
Expand Down Expand Up @@ -263,7 +268,7 @@ function generateResourceInfo(
}

const endpoints = schema.links.map<EndpointInfo>((link) => {
const urlPlaceholders: EndpointInfo['urlPlaceholder'][] = [];
const urlPlaceholders: EndpointInfo['urlPlaceholders'] = [];

const urlTemplate = link.href.replace(
identityRegexp,
Expand All @@ -278,12 +283,6 @@ function generateResourceInfo(
},
);

if (urlPlaceholders.length > 1) {
throw new Error(
`More than one placeholder in ${jsonApiType}#${link.rel}`,
);
}

const baseTypeName = jsonApiType;

const responseType = link.jobSchema
Expand Down Expand Up @@ -348,7 +347,9 @@ function generateResourceInfo(
urlTemplate,
method: link.method,
comment: link.title,
urlPlaceholder: urlPlaceholders[0] || undefined,
urlPlaceholders,
entityIdPlaceholder:
urlPlaceholders.find((p) => p.isEntityId) || undefined,
requestBodyType: link.schema
? `${toSafeName(baseTypeName, true)}${toSafeName(link.rel, true)}Schema`
: undefined,
Expand Down Expand Up @@ -404,7 +405,9 @@ function generateResourceInfo(
endpoints,
namespace: toSafeName(
endpoints.some(
(e) => e.returnsCollection || (e.name === 'find' && e.urlPlaceholder),
(e) =>
e.returnsCollection ||
(e.name === 'find' && e.urlPlaceholders.length === 1),
)
? `${jsonApiType}s`
: jsonApiType,
Expand Down
46 changes: 23 additions & 23 deletions generate/templates/resources/ResourceClass.ts.handlebars
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ export default class {{{resourceClassName}}} extends BaseResource {
{{/if}}
*/
{{{name}}}(
{{#if urlPlaceholder}}
{{{urlPlaceholder.variableName}}}: string | SimpleSchemaTypes.{{{urlPlaceholder.relType}}},
{{/if}}
{{#each urlPlaceholders}}
{{{variableName}}}: string | SimpleSchemaTypes.{{{relType}}},
{{/each}}
{{#if requestBodyType}}
body{{#if optionalRequestBody}}?{{/if}}: SimpleSchemaTypes.{{{requestBodyType}}},
{{/if}}
Expand All @@ -34,16 +34,16 @@ export default class {{{resourceClassName}}} extends BaseResource {
{{/if}}
) {
return this.{{{rawName}}}(
{{#if urlPlaceholder}}
Utils.toId({{{urlPlaceholder.variableName}}}),
{{/if}}
{{#each urlPlaceholders}}
Utils.toId({{{variableName}}}),
{{/each}}
{{#if requestBodyType}}
{{#if optionalRequestBody}}body ? {{/if}}Utils.serializeRequestBody<SchemaTypes.{{{requestBodyType}}}>(
body,
{
{{#if urlPlaceholder.isEntityId}}
{{#if entityIdPlaceholder}}
{{#if requestStructure.idRequired}}
id: Utils.toId({{{urlPlaceholder.variableName}}}),
id: Utils.toId({{{entityIdPlaceholder.variableName}}}),
{{/if}}
{{/if}}
type: {{{stringify requestStructure.type}}},
Expand Down Expand Up @@ -79,9 +79,9 @@ export default class {{{resourceClassName}}} extends BaseResource {
{{/if}}
*/
{{{rawName}}}(
{{#if urlPlaceholder}}
{{{urlPlaceholder.variableName}}}: string,
{{/if}}
{{#each urlPlaceholders}}
{{{variableName}}}: string,
{{/each}}
{{#if requestBodyType}}
body{{#if optionalRequestBody}}?{{/if}}: SchemaTypes.{{{requestBodyType}}},
{{/if}}
Expand Down Expand Up @@ -127,16 +127,16 @@ export default class {{{resourceClassName}}} extends BaseResource {
* @throws {TimeoutError}
*/
async *{{{name}}}PagedIterator(
{{#if urlPlaceholder}}
{{{urlPlaceholder.variableName}}}: string | SimpleSchemaTypes.{{{urlPlaceholder.relType}}},
{{/if}}
{{#each urlPlaceholders}}
{{{variableName}}}: string | SimpleSchemaTypes.{{{relType}}},
{{/each}}
queryParams{{#unless queryParamsRequired}}?{{/unless}}: Utils.OmitFromKnownKeys<SimpleSchemaTypes.{{{queryParamsType}}}, 'page'>,
iteratorOptions?: Utils.IteratorOptions,
) {
for await (const element of this.{{{rawName}}}PagedIterator(
{{#if urlPlaceholder}}
Utils.toId({{{urlPlaceholder.variableName}}}),
{{/if}}
{{#each urlPlaceholders}}
Utils.toId({{{variableName}}}),
{{/each}}
queryParams,
iteratorOptions,
)) {
Expand All @@ -158,9 +158,9 @@ export default class {{{resourceClassName}}} extends BaseResource {
* @throws {TimeoutError}
*/
{{{rawName}}}PagedIterator(
{{#if urlPlaceholder}}
{{{urlPlaceholder.variableName}}}: string,
{{/if}}
{{#each urlPlaceholders}}
{{{variableName}}}: string,
{{/each}}
queryParams{{#unless queryParamsRequired}}?{{/unless}}: Utils.OmitFromKnownKeys<SchemaTypes.{{{queryParamsType}}}, 'page'>,
iteratorOptions?: Utils.IteratorOptions,
) {
Expand All @@ -174,9 +174,9 @@ export default class {{{resourceClassName}}} extends BaseResource {
maxLimit: {{{paginatedResponse.maxLimit}}},
},
(page: SchemaTypes.{{{queryParamsType}}}['page']) => this.{{{rawName}}}(
{{#if urlPlaceholder}}
{{{urlPlaceholder.variableName}}},
{{/if}}
{{#each urlPlaceholders}}
{{{variableName}}},
{{/each}}
{ ...queryParams, page },
),
iteratorOptions,
Expand Down
10 changes: 2 additions & 8 deletions packages/cma-client-browser/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@
"name": "@datocms/cma-client-browser",
"version": "3.3.0",
"description": "Browser client for DatoCMS REST Content Management API",
"keywords": [
"datocms",
"client"
],
"keywords": ["datocms", "client"],
"author": "Stefano Verna <s.verna@datocms.com>",
"homepage": "https://github.com/datocms/js-rest-api-clients/tree/main/packages/cma-client-browser#readme",
"license": "MIT",
Expand All @@ -16,10 +13,7 @@
"lib": "dist",
"test": "__tests__"
},
"files": [
"dist",
"src"
],
"files": ["dist", "src"],
"publishConfig": {
"access": "public"
},
Expand Down
1 change: 1 addition & 0 deletions packages/cma-client-browser/src/generated/resources.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ export const Item = Resources.Item;
export const ItemVersion = Resources.ItemVersion;
export { default as Upload } from '../resources/Upload';
export const UploadRequest = Resources.UploadRequest;
export const UploadTrack = Resources.UploadTrack;
export const ScheduledPublication = Resources.ScheduledPublication;
export const ScheduledUnpublishing = Resources.ScheduledUnpublishing;
export const SearchResult = Resources.SearchResult;
Expand Down
10 changes: 2 additions & 8 deletions packages/cma-client-node/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@
"name": "@datocms/cma-client-node",
"version": "3.3.0",
"description": "NodeJS client for DatoCMS REST Content Management API",
"keywords": [
"datocms",
"client"
],
"keywords": ["datocms", "client"],
"author": "Stefano Verna <s.verna@datocms.com>",
"homepage": "https://github.com/datocms/js-rest-api-clients/tree/main/packages/cma-client-node#readme",
"license": "MIT",
Expand All @@ -16,10 +13,7 @@
"lib": "dist",
"test": "__tests__"
},
"files": [
"dist",
"src"
],
"files": ["dist", "src"],
"publishConfig": {
"access": "public"
},
Expand Down
1 change: 1 addition & 0 deletions packages/cma-client-node/src/generated/resources.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ export const Item = Resources.Item;
export const ItemVersion = Resources.ItemVersion;
export { default as Upload } from '../resources/Upload';
export const UploadRequest = Resources.UploadRequest;
export const UploadTrack = Resources.UploadTrack;
export const ScheduledPublication = Resources.ScheduledPublication;
export const ScheduledUnpublishing = Resources.ScheduledUnpublishing;
export const SearchResult = Resources.SearchResult;
Expand Down
11 changes: 2 additions & 9 deletions packages/cma-client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@
"name": "@datocms/cma-client",
"version": "3.3.0",
"description": "JS client for DatoCMS REST Content Management API",
"keywords": [
"datocms",
"client"
],
"keywords": ["datocms", "client"],
"author": "Stefano Verna <s.verna@datocms.com>",
"homepage": "https://github.com/datocms/js-rest-api-clients/tree/main/packages/cma-client#readme",
"license": "MIT",
Expand All @@ -17,11 +14,7 @@
"lib": "dist",
"test": "__tests__"
},
"files": [
"dist",
"src",
"resources.json"
],
"files": ["dist", "src", "resources.json"],
"publishConfig": {
"access": "public"
},
Expand Down
Loading

0 comments on commit 4d60d5e

Please sign in to comment.