Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .changeset/itchy-pandas-report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@drupal-kit/simple-oauth-auth-code": patch
"@drupal-kit/simple-oauth": patch
"@drupal-kit/user-api": patch
"@drupal-kit/jsonapi": patch
---

Fix inter-dependency resolution
33 changes: 9 additions & 24 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,43 +1,28 @@
name: Lint & Test

on:
push:
push:
pull_request:
types: [opened, synchronize, reopened]

concurrency: ${{ github.workflow }}-${{ github.ref }}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
lint-and-test:
name: Lint & Test
runs-on: ubuntu-latest
defaults:
run:
shell: nix develop --command bash {0}
runs-on: blacksmith-2vcpu-ubuntu-2404-arm
steps:
- name: Checkout Repo
uses: actions/checkout@v4

- name: Install nix
uses: nixbuild/nix-quick-install-action@v26
- uses: pnpm/action-setup@v4

- name: Get pnpm store directory
id: pnpm-cache
run: echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT

- uses: actions/cache@v4
name: Setup pnpm cache
- uses: actions/setup-node@v4
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

- name: Set token config
run: |
echo "//npm.wunderwerk.dev/:_authToken=${NPM_TOKEN}" >> .npmrc
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
node-version: "22"
cache: "pnpm"

- name: Install dependencies
run: pnpm install
Expand Down
2 changes: 1 addition & 1 deletion packages/jsonapi/tests/DrupalkitJsonApiError.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import test from "ava";
import { DrupalkitError, UNKNOWN_ERROR_PREFIX } from "@drupal-kit/core";

import { DrupalkitJsonApiError } from "../src/index.js";
import JsonApiErrorResponse from "./fixtures/jsonapi_multiple_errors.json" with { type: "json" };
import JsonApiErrorResponse from "./fixtures/jsonapi_multiple_errors.js";

const request = {
method: "GET",
Expand Down
898 changes: 898 additions & 0 deletions packages/jsonapi/tests/fixtures/jsonapi_article_collection.ts

Large diffs are not rendered by default.

128 changes: 128 additions & 0 deletions packages/jsonapi/tests/fixtures/jsonapi_article_detail.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
const JsonApiArticleDetail = {
jsonapi: {
version: "1.0",
meta: {
links: {
self: {
href: "http://jsonapi.org/format/1.0/",
},
},
},
},
data: {
type: "node--article",
id: "5f5f5f5f-5f5f-5f5f-5f5f-5f5f5f5f5f5f",
links: {
self: {
href: "https://my-drupal.com/jsonapi/node/article/5f5f5f5f-5f5f-5f5f-5f5f-5f5f5f5f5f5f",
},
},
attributes: {
drupal_internal__nid: 3,
drupal_internal__vid: 3,
langcode: "de",
revision_timestamp: "2023-02-23T11:10:08+00:00",
revision_log: null,
status: true,
title: "Milchfreie und köstliche Milchschokolade",
created: "2023-01-27T09:38:39+00:00",
changed: "2023-02-23T11:10:08+00:00",
promote: true,
sticky: false,
default_langcode: true,
revision_translation_affected: true,
path: {
alias: "/articles/milchfreie-und-koestliche-milchschokolade",
pid: 4,
langcode: "de",
},
content_translation_source: "und",
content_translation_outdated: false,
body: {
value:
"<p>Der Kalender ist voll von Ausreden für Schokoladenliebhaber, von religiösen Festen bis zu Geburtstagen - und sogar dem Weltschokoladentag am 7. Juli. Aber auch Veganer oder Menschen, die sich milchfrei ernähren, müssen nicht leer ausgehen, denn es gibt viele köstliche vegane Schokoladensorten im Angebot.</p><p>Milchfreie Milchschokolade wird weitgehend auf die gleiche Weise hergestellt wie normale Schokolade, bis zu dem Punkt, an dem die Milch hinzugefügt wird. Die Kakaobohnen werden ein paar Stunden lang geröstet, bis sie einen reichen Geschmack entwickeln. Die äußeren Schalen werden entfernt, und die inneren Nibs werden gemahlen, um eine Paste zu erhalten, die mit Kakaobutter gemischt werden kann, um den gewünschten Prozentsatz an Schokolade herzustellen. Aromen, Zucker und Milch werden in unterschiedlichen Mengen hinzugefügt, um die gewünschte Schokoladenart zu erhalten. Die Schokolade ist zu diesem Zeitpunkt körnig und muss püriert werden, bis sie glatt ist - das kann Tage dauern! Schließlich wird sie durch Erhitzen und Abkühlen temperiert, bis sie verzehrfertig ist.</p><p>Wie also bekommen vegane Chocolatiers den cremigen Milchgeschmack und die Textur in ihre Produkte?</p>",
format: "ckeditor",
processed:
"<p>Der Kalender ist voll von Ausreden für Schokoladenliebhaber, von religiösen Festen bis zu Geburtstagen - und sogar dem Weltschokoladentag am 7. Juli. Aber auch Veganer oder Menschen, die sich milchfrei ernähren, müssen nicht leer ausgehen, denn es gibt viele köstliche vegane Schokoladensorten im Angebot.</p><p>Milchfreie Milchschokolade wird weitgehend auf die gleiche Weise hergestellt wie normale Schokolade, bis zu dem Punkt, an dem die Milch hinzugefügt wird. Die Kakaobohnen werden ein paar Stunden lang geröstet, bis sie einen reichen Geschmack entwickeln. Die äußeren Schalen werden entfernt, und die inneren Nibs werden gemahlen, um eine Paste zu erhalten, die mit Kakaobutter gemischt werden kann, um den gewünschten Prozentsatz an Schokolade herzustellen. Aromen, Zucker und Milch werden in unterschiedlichen Mengen hinzugefügt, um die gewünschte Schokoladenart zu erhalten. Die Schokolade ist zu diesem Zeitpunkt körnig und muss püriert werden, bis sie glatt ist - das kann Tage dauern! Schließlich wird sie durch Erhitzen und Abkühlen temperiert, bis sie verzehrfertig ist.</p><p>Wie also bekommen vegane Chocolatiers den cremigen Milchgeschmack und die Textur in ihre Produkte?</p>",
summary:
"Der Kalender ist voll von Ausreden für Schokoladenliebhaber, von religiösen Festen bis zu Geburtstagen - und sogar dem Weltschokoladentag am 7. Juli. Aber auch Veganer oder Menschen, die sich milchfrei ernähren, müssen nicht leer ausgehen, denn es gibt viele köstliche vegane Schokoladensorten im Angebot.",
},
},
relationships: {
node_type: {
data: null,
links: {
self: {
href: "https://my-drupal.com/jsonapi/node/article/58e198f6-41af-48b0-b889-596adcb9622e/relationships/node_type?resourceVersion=id%3A3",
},
},
},
revision_uid: {
data: {
type: "user--user",
id: "f0d79a17-a6b1-4c34-ba1b-ae298826f68a",
meta: {
drupal_internal__target_id: 1,
},
},
links: {
related: {
href: "https://my-drupal.com/jsonapi/node/article/58e198f6-41af-48b0-b889-596adcb9622e/revision_uid?resourceVersion=id%3A3",
},
self: {
href: "https://my-drupal.com/jsonapi/node/article/58e198f6-41af-48b0-b889-596adcb9622e/relationships/revision_uid?resourceVersion=id%3A3",
},
},
},
uid: {
data: {
type: "user--user",
id: "f0d79a17-a6b1-4c34-ba1b-ae298826f68a",
meta: {
drupal_internal__target_id: 1,
},
},
links: {
related: {
href: "https://my-drupal.com/jsonapi/node/article/58e198f6-41af-48b0-b889-596adcb9622e/uid?resourceVersion=id%3A3",
},
self: {
href: "https://my-drupal.com/jsonapi/node/article/58e198f6-41af-48b0-b889-596adcb9622e/relationships/uid?resourceVersion=id%3A3",
},
},
},
field_media: {
data: {
type: "media--image",
id: "6530afc8-5635-45b7-a3d9-920d7e10c39e",
meta: {
drupal_internal__target_id: 8,
},
},
links: {
related: {
href: "https://my-drupal.com/jsonapi/node/article/58e198f6-41af-48b0-b889-596adcb9622e/field_media?resourceVersion=id%3A3",
},
self: {
href: "https://my-drupal.com/jsonapi/node/article/58e198f6-41af-48b0-b889-596adcb9622e/relationships/field_media?resourceVersion=id%3A3",
},
},
},
},
meta: {
localeInfo: [
{
langcode: "en",
path: "/articles/dairy-free-and-delicious-milk-chocolate",
},
],
},
},
links: {
self: {
href: "https://my-drupal.com/jsonapi/node/article/58e198f6-41af-48b0-b889-596adcb9622e?resourceVersion=id%3A3",
},
},
} as const;

export default JsonApiArticleDetail;
42 changes: 42 additions & 0 deletions packages/jsonapi/tests/fixtures/jsonapi_file_upload.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
const JsonApiFileUpload = {
jsonapi: {
version: "1.0",
meta: {
links: {
self: {
href: "http://jsonapi.org/format/1.0/",
},
},
},
},
data: {
type: "file--file",
id: "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
links: {
self: {
href: "https://my-drupal.com/jsonapi/file/file/a1b2c3d4-e5f6-7890-abcd-ef1234567890",
},
},
attributes: {
drupal_internal__fid: 123,
langcode: "en",
filename: "test-image.jpg",
uri: {
value: "public://2024-01/test-image.jpg",
url: "/sites/default/files/2024-01/test-image.jpg",
},
filemime: "image/jpeg",
filesize: 12345,
status: true,
created: "2024-01-15T10:30:00+00:00",
changed: "2024-01-15T10:30:00+00:00",
},
},
links: {
self: {
href: "https://my-drupal.com/jsonapi/node/with-file/5f5f5f5f-5f5f-5f5f-5f5f-5f5f5f5f5f5f/field_image",
},
},
} as const;

export default JsonApiFileUpload;
30 changes: 30 additions & 0 deletions packages/jsonapi/tests/fixtures/jsonapi_include_error.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
const JsonApiIncludeError = {
jsonapi: {
version: "1.0",
meta: {
links: {
self: {
href: "http://jsonapi.org/format/1.0/",
},
},
},
},
errors: [
{
title: "Bad Request",
status: "400",
detail:
"`wrong-field` is not a valid relationship field name. Possible values: node_type, revision_uid, uid, menu_link, field_media.",
links: {
via: {
href: "https://my-drupal.com/jsonapi/node/article/5f5f5f5f-5f5f-5f5f-5f5f-5f5f5f5f5f5f",
},
info: {
href: "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1",
},
},
},
],
} as const;

export default JsonApiIncludeError;
35 changes: 35 additions & 0 deletions packages/jsonapi/tests/fixtures/jsonapi_index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
const JsonApiIndex = {
jsonapi: {
version: "1.0",
meta: {
links: {
self: {
href: "http://jsonapi.org/format/1.0/",
},
},
},
},
data: [],
links: {
"file--file": {
href: "https://my-drupal.com/jsonapi/file/file",
},
"media--image": {
href: "https://my-drupal.com/jsonapi/media/image",
},
"node--article": {
href: "https://my-drupal.com/jsonapi/node/article",
},
"node--page": {
href: "https://my-drupal.com/jsonapi/node/page",
},
self: {
href: "https://my-drupal.com/jsonapi",
},
"user--user": {
href: "https://my-drupal.com/jsonapi/user/user",
},
},
} as const;

export default JsonApiIndex;
20 changes: 20 additions & 0 deletions packages/jsonapi/tests/fixtures/jsonapi_index_error.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
const JsonApiIndexError = {
jsonapi: {
version: "1.0",
meta: {
links: {
self: {
href: "http://jsonapi.org/format/1.0/",
},
},
},
},
errros: [
{
title: "Error",
status: "500",
},
],
} as const;

export default JsonApiIndexError;
46 changes: 46 additions & 0 deletions packages/jsonapi/tests/fixtures/jsonapi_menu_items.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
const JsonApiMenuItems = {
jsonapi: {
version: "1.0",
meta: {
links: {
self: {
href: "http://jsonapi.org/format/1.0/",
},
},
},
},
data: [
{
type: "menu_link_content--menu_link_content",
id: "menu_link_content:1c6d3476-61b1-4b7e-a580-6fa63bdac5d1",
attributes: {
description: null,
enabled: true,
expanded: false,
menu_name: "my_menu",
meta: {
entity_id: "2",
},
options: [],
parent: "",
provider: "menu_link_content",
route: {
name: "entity.node.canonical",
parameters: {
node: "14",
},
},
title: "Test-Page",
url: "/test-page",
weight: 0,
},
},
],
links: {
self: {
href: "https://my-drupal.com/jsonapi/menu_items/my_menu",
},
},
} as const;

export default JsonApiMenuItems;
Loading