@wix/astro 0.2.1 → 0.2.3

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.
@@ -0,0 +1,18 @@
1
+ import { categories, posts, tags } from "@wix/blog";
2
+ import { items } from "@wix/data";
3
+ import { plans } from "@wix/pricing-plans";
4
+ export declare const getWixClient: ({ modules }?: {
5
+ modules: {
6
+ items: typeof items;
7
+ posts: typeof posts;
8
+ categories: typeof categories;
9
+ tags: typeof tags;
10
+ plans: typeof plans;
11
+ };
12
+ }) => import("@wix/sdk").WixClient<undefined, import("@wix/sdk").IOAuthStrategy, {
13
+ items: typeof items;
14
+ posts: typeof posts;
15
+ categories: typeof categories;
16
+ tags: typeof tags;
17
+ plans: typeof plans;
18
+ }>;
package/dist/client.js ADDED
@@ -0,0 +1,18 @@
1
+ import { categories, posts, tags } from "@wix/blog";
2
+ import { items } from "@wix/data";
3
+ import { plans } from "@wix/pricing-plans";
4
+ import { createClient, OAuthStrategy } from "@wix/sdk";
5
+ export const getWixClient = ({ modules } = { modules: { items, posts, categories, tags, plans } }) => {
6
+ const { WIX_CLIENT_ID } = import.meta.env;
7
+ if (!WIX_CLIENT_ID) {
8
+ throw new Error(`❌ Wix Client ID is missing! Please create an ".env.local" file with WIX_CLIENT_ID.`);
9
+ }
10
+ const wixClient = createClient({
11
+ modules,
12
+ auth: OAuthStrategy({
13
+ clientId: WIX_CLIENT_ID,
14
+ }),
15
+ });
16
+ return wixClient;
17
+ };
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFdkQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQzFCLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFDcEUsRUFBRTtJQUNGLE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUUxQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FDYixvRkFBb0YsQ0FDckYsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUM7UUFDN0IsT0FBTztRQUNQLElBQUksRUFBRSxhQUFhLENBQUM7WUFDbEIsUUFBUSxFQUFFLGFBQWE7U0FDeEIsQ0FBQztLQUNILENBQUMsQ0FBQztJQUVILE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMsQ0FBQyJ9
package/dist/index.d.ts CHANGED
@@ -1,3 +1,7 @@
1
- import type { AstroIntegration } from "astro";
1
+ import { createIntegration } from "./integration.js";
2
+ import { wixBlogLoader } from "./loaders/index.js";
2
3
  export type { Runtime } from "./entrypoints/server.js";
3
- export default function createIntegration(): AstroIntegration;
4
+ export { wixBlogLoader };
5
+ import { getWixClient } from "./client.js";
6
+ export { getWixClient };
7
+ export default createIntegration;
package/dist/index.js CHANGED
@@ -1,137 +1,7 @@
1
- import { appendForwardSlash, prependForwardSlash, } from "@astrojs/internal-helpers/path";
2
- import { createRequire } from "node:module";
3
- import { passthroughImageService } from "astro/config";
4
- import { buildResolver } from "esm-resolve";
5
- import { fileURLToPath } from "node:url";
6
- export default function createIntegration() {
7
- let _config;
8
- return {
9
- name: "@wix/astro",
10
- hooks: {
11
- "astro:config:setup": async ({ config, updateConfig, addMiddleware }) => {
12
- const aRequire = buildResolver(fileURLToPath(import.meta.url), {
13
- resolveToAbsolute: true,
14
- });
15
- addMiddleware({
16
- entrypoint: aRequire("./middleware"),
17
- order: "pre",
18
- });
19
- updateConfig({
20
- env: {
21
- schema: {
22
- WIX_CLIENT_ID: {
23
- type: "string",
24
- access: "public",
25
- context: "client",
26
- optional: true,
27
- },
28
- WIX_CLIENT_SECRET: {
29
- type: "string",
30
- access: "secret",
31
- context: "server",
32
- optional: true,
33
- },
34
- WIX_CLIENT_PUBLIC_KEY: {
35
- type: "string",
36
- access: "secret",
37
- context: "server",
38
- optional: true,
39
- },
40
- WIX_CLIENT_INSTANCE_ID: {
41
- type: "string",
42
- access: "secret",
43
- context: "server",
44
- optional: true,
45
- },
46
- },
47
- },
48
- build: {
49
- client: new URL(`./client${prependForwardSlash(appendForwardSlash(config.base))}`, config.outDir),
50
- server: new URL("./server/", config.outDir),
51
- serverEntry: "index.js",
52
- redirects: false,
53
- },
54
- vite: {
55
- plugins: [
56
- // The plugin is used to inject the Wix SDK context into the client bundle
57
- // It's currently commented out because there are some issues with the current implementation
58
- // (currently the magic import is injected into any type of module, not only JS)
59
- // not sure if it's necessary to inject the Wix SDK context into the client bundle
60
- // wixSDKContext(),
61
- ],
62
- environments: {
63
- wixManifest: {
64
- build: {
65
- lib: {
66
- entry: "src/wix/index",
67
- formats: ["iife"],
68
- name: "wixManifest",
69
- },
70
- },
71
- },
72
- },
73
- },
74
- image: {
75
- service: passthroughImageService(),
76
- domains: ["static.wixstatic.com"],
77
- },
78
- });
79
- },
80
- "astro:config:done": async ({ setAdapter, config }) => {
81
- _config = config;
82
- setAdapter({
83
- name: "@wix/astro",
84
- serverEntrypoint: createRequire(import.meta.url).resolve("./entrypoints/server"),
85
- exports: ["default"],
86
- adapterFeatures: {
87
- edgeMiddleware: false,
88
- buildOutput: "server",
89
- },
90
- supportedAstroFeatures: {
91
- serverOutput: "stable",
92
- hybridOutput: "stable",
93
- staticOutput: "stable",
94
- i18nDomains: "experimental",
95
- sharpImageService: "unsupported",
96
- envGetSecret: "stable",
97
- },
98
- });
99
- },
100
- "astro:build:setup": ({ vite, target }) => {
101
- if (target === "server") {
102
- vite.resolve ||= {};
103
- vite.resolve.alias ||= {};
104
- vite.resolve.conditions ||= [];
105
- // We need those conditions, previous these conditions where applied at the esbuild step which we removed
106
- // https://github.com/withastro/astro/pull/7092
107
- vite.resolve.conditions.push("workerd", "worker");
108
- vite.ssr ||= {};
109
- vite.ssr.target = "webworker";
110
- vite.ssr.noExternal = true;
111
- if (typeof _config.vite.ssr?.external === "undefined")
112
- vite.ssr.external = ["node:async_hooks"];
113
- if (typeof _config.vite.ssr?.external === "boolean")
114
- vite.ssr.external = _config.vite.ssr?.external;
115
- if (Array.isArray(_config.vite.ssr?.external)) {
116
- // `@astrojs/vue` sets `@vue/server-renderer` to external
117
- // https://github.com/withastro/astro/blob/e648c5575a8774af739231cfa9fc27a32086aa5f/packages/integrations/vue/src/index.ts#L119
118
- // the cloudflare adapter needs to get all dependencies inlined, we use `noExternal` for that, but any `external` config overrides that
119
- // therefore we need to remove `@vue/server-renderer` from the external config again
120
- vite.ssr.external = _config.vite.ssr?.external.filter((entry) => entry !== "@vue/server-renderer");
121
- vite.ssr.external.push("node:async_hooks");
122
- }
123
- }
124
- // we thought that vite config inside `if (target === 'server')` would not apply for client
125
- // but it seems like the same `vite` reference is used for both
126
- // so we need to reset the previous conflicting setting
127
- // in the future we should look into a more robust solution
128
- if (target === "client") {
129
- vite.resolve ||= {};
130
- vite.resolve.conditions ||= [];
131
- vite.resolve.conditions = vite.resolve.conditions.filter((c) => c !== "workerd" && c !== "worker");
132
- }
133
- },
134
- },
135
- };
136
- }
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixtQkFBbUIsR0FDcEIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJekMsTUFBTSxDQUFDLE9BQU8sVUFBVSxpQkFBaUI7SUFDdkMsSUFBSSxPQUFvQixDQUFDO0lBRXpCLE9BQU87UUFDTCxJQUFJLEVBQUUsWUFBWTtRQUNsQixLQUFLLEVBQUU7WUFDTCxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUU7Z0JBQ3RFLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDN0QsaUJBQWlCLEVBQUUsSUFBSTtpQkFDeEIsQ0FBQyxDQUFDO2dCQUVILGFBQWEsQ0FBQztvQkFDWixVQUFVLEVBQUUsUUFBUSxDQUFDLGNBQWMsQ0FBRTtvQkFDckMsS0FBSyxFQUFFLEtBQUs7aUJBQ2IsQ0FBQyxDQUFDO2dCQUVILFlBQVksQ0FBQztvQkFDWCxHQUFHLEVBQUU7d0JBQ0gsTUFBTSxFQUFFOzRCQUNOLGFBQWEsRUFBRTtnQ0FDYixJQUFJLEVBQUUsUUFBUTtnQ0FDZCxNQUFNLEVBQUUsUUFBUTtnQ0FDaEIsT0FBTyxFQUFFLFFBQVE7Z0NBQ2pCLFFBQVEsRUFBRSxJQUFJOzZCQUNmOzRCQUNELGlCQUFpQixFQUFFO2dDQUNqQixJQUFJLEVBQUUsUUFB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
1
+ import { createIntegration } from "./integration.js";
2
+ import { wixBlogLoader } from "./loaders/index.js";
3
+ export { wixBlogLoader };
4
+ import { getWixClient } from "./client.js";
5
+ export { getWixClient };
6
+ export default createIntegration;
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQztBQUV6QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsQ0FBQztBQUV4QixlQUFlLGlCQUFpQixDQUFDIn0=
@@ -0,0 +1,5 @@
1
+ import type { AstroIntegration } from "astro";
2
+ import { wixBlogLoader } from "./loaders/blog.js";
3
+ export { wixBlogLoader };
4
+ export type { Runtime } from "./entrypoints/server.js";
5
+ export declare function createIntegration(): AstroIntegration;
@@ -0,0 +1,146 @@
1
+ import { appendForwardSlash, prependForwardSlash, } from "@astrojs/internal-helpers/path";
2
+ import { createRequire } from "node:module";
3
+ import { passthroughImageService } from "astro/config";
4
+ import { buildResolver } from "esm-resolve";
5
+ import { fileURLToPath } from "node:url";
6
+ import { wixBlogLoader } from "./loaders/blog.js";
7
+ import { loadEnv } from "vite";
8
+ import chalk from "chalk";
9
+ import { outdent } from "outdent";
10
+ export { wixBlogLoader };
11
+ export function createIntegration() {
12
+ let _config;
13
+ return {
14
+ name: "@wix/astro",
15
+ hooks: {
16
+ "astro:config:setup": async ({ config, updateConfig, addMiddleware, logger, }) => {
17
+ const aRequire = buildResolver(fileURLToPath(import.meta.url), {
18
+ resolveToAbsolute: true,
19
+ });
20
+ addMiddleware({
21
+ entrypoint: aRequire("./middleware"),
22
+ order: "pre",
23
+ });
24
+ const userEnv = loadEnv(process.env["NODE_ENV"] ?? "development", process.cwd(), "");
25
+ if (!userEnv["WIX_CLIENT_ID"]) {
26
+ logger.error(outdent `
27
+ Missing environment variable ${chalk.blueBright(`WIX_CLIENT_ID`)}
28
+ To use the Wix SDK, you must provide the ${chalk.blueBright("WIX_CLIENT_ID")} environment variable.
29
+
30
+ 💡 To pull the required environment variables from Wix, run:
31
+ ${chalk.magenta("npx wix edge pull-env --prod")}
32
+
33
+ 🔍 Need Help?
34
+ - Visit our docs: https://dev.wix.com/docs/go-headless
35
+ - Join the community: https://discord.com/channels/1114269395317968906/1288424190969511987
36
+
37
+ `);
38
+ throw new Error(`${chalk.magenta(`WIX_CLIENT_ID`)} not found in loaded environment variables`);
39
+ }
40
+ updateConfig({
41
+ env: {
42
+ schema: {
43
+ WIX_CLIENT_ID: {
44
+ type: "string",
45
+ access: "public",
46
+ context: "client",
47
+ },
48
+ WIX_CLIENT_SECRET: {
49
+ type: "string",
50
+ access: "secret",
51
+ context: "server",
52
+ optional: true,
53
+ },
54
+ WIX_CLIENT_PUBLIC_KEY: {
55
+ type: "string",
56
+ access: "secret",
57
+ context: "server",
58
+ optional: true,
59
+ },
60
+ WIX_CLIENT_INSTANCE_ID: {
61
+ type: "string",
62
+ access: "secret",
63
+ context: "server",
64
+ optional: true,
65
+ },
66
+ },
67
+ },
68
+ build: {
69
+ client: new URL(`./client${prependForwardSlash(appendForwardSlash(config.base))}`, config.outDir),
70
+ server: new URL("./server/", config.outDir),
71
+ serverEntry: "index.js",
72
+ redirects: false,
73
+ },
74
+ vite: {
75
+ plugins: [
76
+ // The plugin is used to inject the Wix SDK context into the client bundle
77
+ // It's currently commented out because there are some issues with the current implementation
78
+ // (currently the magic import is injected into any type of module, not only JS)
79
+ // not sure if it's necessary to inject the Wix SDK context into the client bundle
80
+ // wixSDKContext(),
81
+ ],
82
+ },
83
+ image: {
84
+ service: passthroughImageService(),
85
+ domains: ["static.wixstatic.com"],
86
+ },
87
+ });
88
+ },
89
+ "astro:config:done": async ({ setAdapter, config }) => {
90
+ _config = config;
91
+ setAdapter({
92
+ name: "@wix/astro",
93
+ serverEntrypoint: createRequire(import.meta.url).resolve("./entrypoints/server"),
94
+ exports: ["default"],
95
+ adapterFeatures: {
96
+ edgeMiddleware: false,
97
+ buildOutput: "server",
98
+ },
99
+ supportedAstroFeatures: {
100
+ serverOutput: "stable",
101
+ hybridOutput: "stable",
102
+ staticOutput: "stable",
103
+ i18nDomains: "experimental",
104
+ sharpImageService: "unsupported",
105
+ envGetSecret: "stable",
106
+ },
107
+ });
108
+ },
109
+ "astro:build:setup": ({ vite, target }) => {
110
+ if (target === "server") {
111
+ vite.resolve ||= {};
112
+ vite.resolve.alias ||= {};
113
+ vite.resolve.conditions ||= [];
114
+ // We need those conditions, previous these conditions where applied at the esbuild step which we removed
115
+ // https://github.com/withastro/astro/pull/7092
116
+ vite.resolve.conditions.push("workerd", "worker");
117
+ vite.ssr ||= {};
118
+ vite.ssr.target = "webworker";
119
+ vite.ssr.noExternal = true;
120
+ if (typeof _config.vite.ssr?.external === "undefined")
121
+ vite.ssr.external = ["node:async_hooks"];
122
+ if (typeof _config.vite.ssr?.external === "boolean")
123
+ vite.ssr.external = _config.vite.ssr?.external;
124
+ if (Array.isArray(_config.vite.ssr?.external)) {
125
+ // `@astrojs/vue` sets `@vue/server-renderer` to external
126
+ // https://github.com/withastro/astro/blob/e648c5575a8774af739231cfa9fc27a32086aa5f/packages/integrations/vue/src/index.ts#L119
127
+ // the cloudflare adapter needs to get all dependencies inlined, we use `noExternal` for that, but any `external` config overrides that
128
+ // therefore we need to remove `@vue/server-renderer` from the external config again
129
+ vite.ssr.external = _config.vite.ssr?.external.filter((entry) => entry !== "@vue/server-renderer");
130
+ vite.ssr.external.push("node:async_hooks");
131
+ }
132
+ }
133
+ // we thought that vite config inside `if (target === 'server')` would not apply for client
134
+ // but it seems like the same `vite` reference is used for both
135
+ // so we need to reset the previous conflicting setting
136
+ // in the future we should look into a more robust solution
137
+ if (target === "client") {
138
+ vite.resolve ||= {};
139
+ vite.resolve.conditions ||= [];
140
+ vite.resolve.conditions = vite.resolve.conditions.filter((c) => c !== "workerd" && c !== "worker");
141
+ }
142
+ },
143
+ },
144
+ };
145
+ }
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW50ZWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixtQkFBbUIsR0FDcEIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO0FBSXpCLE1BQU0sVUFBVSxpQkFBaUI7SUFDL0IsSUFBSSxPQUFvQixDQUFDO0lBRXpCLE9BQU87UUFDTCxJQUFJLEVBQUUsWUFBWTtRQUNsQixLQUFLLEVBQUU7WUFDTCxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsRUFDM0IsTUFBTSxFQUNOLFlBQVksRUFDWixhQUFhLEVBQ2IsTUFBTSxHQUNQLEVBQUUsRUFBRTtnQkFDSCxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQzdELGlCQUFpQixFQUFFLElBQUk7aUJBQ3hCLENBQUMsQ0FBQztnQkFFSCxhQUFhLENBQUM7b0JBQ1osVUFBVSxFQUFFLFFBQVEsQ0FBQyxjQUFjLENBQUU7b0JBQ3JDLEtBQUssRUFBRSxLQUFLO2lCQUNiLENBQUMs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
@@ -0,0 +1,2 @@
1
+ import type { Loader } from "astro/loaders";
2
+ export declare function wixBlogLoader(transform?: (item: any) => any): Loader;
@@ -0,0 +1,49 @@
1
+ import { categories, posts, tags } from "@wix/blog";
2
+ import { media } from "@wix/sdk";
3
+ import { getWixClient } from "../client.js";
4
+ var PostFieldField;
5
+ (function (PostFieldField) {
6
+ PostFieldField["RICH_CONTENT"] = "RICH_CONTENT";
7
+ PostFieldField["CONTENT_TEXT"] = "CONTENT_TEXT";
8
+ })(PostFieldField || (PostFieldField = {}));
9
+ export function wixBlogLoader(transform = (item) => item) {
10
+ return {
11
+ name: "wix-blog-loader",
12
+ load: async (context) => {
13
+ const { items } = await getWixClient()
14
+ .use(posts)
15
+ .queryPosts({
16
+ fieldsets: [PostFieldField.RICH_CONTENT, PostFieldField.CONTENT_TEXT],
17
+ })
18
+ .find();
19
+ const useCategories = getWixClient().use(categories);
20
+ const useTags = getWixClient().use(tags);
21
+ for (const item of items) {
22
+ const categories = await Promise.all((item.categoryIds || []).map(async (categoryId) => {
23
+ const { category } = await useCategories.getCategory(categoryId);
24
+ return category;
25
+ }));
26
+ const { items: tags } = await useTags.queryTags().find();
27
+ const data = transform({
28
+ ...item,
29
+ // Additions
30
+ ...(item.media?.wixMedia?.image && {
31
+ mediaUrl: media.getImageUrl(item.media?.wixMedia?.image).url,
32
+ }),
33
+ categories,
34
+ tags,
35
+ });
36
+ const digest = context.generateDigest(data);
37
+ context.store.set({
38
+ id: data.id,
39
+ data,
40
+ digest,
41
+ rendered: {
42
+ html: item.contentText || "",
43
+ },
44
+ });
45
+ }
46
+ },
47
+ };
48
+ }
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2FkZXJzL2Jsb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU1QyxJQUFLLGNBR0o7QUFIRCxXQUFLLGNBQWM7SUFDakIsK0NBQTZCLENBQUE7SUFDN0IsK0NBQTZCLENBQUE7QUFDL0IsQ0FBQyxFQUhJLGNBQWMsS0FBZCxjQUFjLFFBR2xCO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJO0lBQzNELE9BQU87UUFDTCxJQUFJLEVBQUUsaUJBQWlCO1FBQ3ZCLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBc0IsRUFBRSxFQUFFO1lBQ3JDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLFlBQVksRUFBRTtpQkFDbkMsR0FBRyxDQUFDLEtBQUssQ0FBQztpQkFDVixVQUFVLENBQUM7Z0JBQ1YsU0FBUyxFQUFFLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsWUFBWSxDQUFDO2FBQ3RFLENBQUM7aUJBQ0QsSUFBSSxFQUFFLENBQUM7WUFDVixNQUFNLGFBQWEsR0FBRyxZQUFZLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDckQsTUFBTSxPQUFPLEdBQUcsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXpDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ3pCLE1BQU0sVUFBVSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDbEMsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUU7b0JBQ2hELE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLGFBQWEsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ2pFLE9BQU8sUUFBUSxDQUFDO2dCQUNsQixDQUFDLENBQUMsQ0FDSCxDQUFDO2dCQUNGLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBRXpELE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQztvQkFDckIsR0FBRyxJQUFJO29CQUVQLFlBQVk7b0JBQ1osR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssSUFBSTt3QkFDakMsUUFBUSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRztxQkFDN0QsQ0FBQztvQkFDRixVQUFVO29CQUNWLElBQUk7aUJBQ0wsQ0FBQyxDQUFDO2dCQUVILE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRTVDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO29CQUNoQixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7b0JBQ1gsSUFBSTtvQkFDSixNQUFNO29CQUNOLFFBQVEsRUFBRTt3QkFDUixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFO3FCQUM3QjtpQkFDRixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIn0=
@@ -0,0 +1,2 @@
1
+ import { wixBlogLoader } from "./blog.js";
2
+ export { wixBlogLoader };
@@ -0,0 +1,3 @@
1
+ import { wixBlogLoader } from "./blog.js";
2
+ export { wixBlogLoader };
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9hZGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQyJ9
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@wix/astro",
3
3
  "description": "Develop your Astro site on the Wix Platform",
4
- "version": "0.2.1",
4
+ "version": "0.2.3",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "keywords": [
@@ -11,6 +11,7 @@
11
11
  ],
12
12
  "exports": {
13
13
  ".": "./dist/index.js",
14
+ "./loaders": "./dist/loaders/index.js",
14
15
  "./entrypoints/server.js": "./dist/entrypoints/server.js",
15
16
  "./package.json": "./package.json"
16
17
  },
@@ -26,17 +27,22 @@
26
27
  "@astrojs/underscore-redirects": "^0.4.0",
27
28
  "@cloudflare/kv-asset-handler": "^0.3.4",
28
29
  "@cloudflare/workers-types": "^4.20241224.0",
29
- "@wix/sdk": "^1.15.7",
30
+ "@wix/blog": "^1.0.345",
31
+ "@wix/data": "^1.0.194",
32
+ "@wix/pricing-plans": "^1.0.121",
33
+ "@wix/sdk": "^1.15.9",
34
+ "chalk": "^5.4.1",
30
35
  "esm-resolve": "^1.0.11",
31
36
  "globby": "^14.0.2",
32
- "magic-string": "^0.30.17"
37
+ "magic-string": "^0.30.17",
38
+ "outdent": "^0.8.0",
39
+ "vite": "^6.0.0"
33
40
  },
34
41
  "peerDependencies": {
35
- "astro": "^5.1.1"
42
+ "astro": "^5.0.0"
36
43
  },
37
44
  "devDependencies": {
38
45
  "@types/node": "^20.9.0",
39
- "astro": "^5.1.1",
40
46
  "typescript": "^5.7.3"
41
47
  }
42
48
  }
@@ -1 +0,0 @@
1
- export {};
@@ -1,4 +0,0 @@
1
- export {};
2
- // NOTE: this file is empty on purpose
3
- // it allows use to offer `imageService: 'compile'`
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZW5kcG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZW50cnlwb2ludHMvaW1hZ2UtZW5kcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHNDQUFzQztBQUN0QyxtREFBbUQifQ==
@@ -1,3 +0,0 @@
1
- import type { ExternalImageService } from "astro";
2
- declare const service: ExternalImageService;
3
- export default service;
@@ -1,35 +0,0 @@
1
- /// <reference types="astro/client" />
2
- import { joinPaths } from "@astrojs/internal-helpers/path";
3
- import { baseService } from "astro/assets";
4
- import { isESMImportedImage, isRemoteAllowed } from "../utils/assets.js";
5
- const service = {
6
- ...baseService,
7
- getURL: (options, imageConfig) => {
8
- const resizingParams = [];
9
- if (options.width)
10
- resizingParams.push(`width=${options.width}`);
11
- if (options.height)
12
- resizingParams.push(`height=${options.height}`);
13
- if (options.quality)
14
- resizingParams.push(`quality=${options.quality}`);
15
- if (options["fit"])
16
- resizingParams.push(`fit=${options["fit"]}`);
17
- if (options.format)
18
- resizingParams.push(`format=${options.format}`);
19
- let imageSource = "";
20
- if (isESMImportedImage(options.src)) {
21
- imageSource = options.src.src;
22
- }
23
- else if (isRemoteAllowed(options.src, imageConfig)) {
24
- imageSource = options.src;
25
- }
26
- else {
27
- // If it's not an imported image, nor is it allowed using the current domains or remote patterns, we'll just return the original URL
28
- return options.src;
29
- }
30
- const imageEndpoint = joinPaths(import.meta.env.BASE_URL, "/cdn-cgi/image", resizingParams.join(","), imageSource);
31
- return imageEndpoint;
32
- },
33
- };
34
- export default service;
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Utc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbnRyeXBvaW50cy9pbWFnZS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQztBQUl0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFekUsTUFBTSxPQUFPLEdBQXlCO0lBQ3BDLEdBQUcsV0FBVztJQUNkLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsRUFBRTtRQUMvQixNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxPQUFPLENBQUMsS0FBSztZQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNqRSxJQUFJLE9BQU8sQ0FBQyxNQUFNO1lBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLElBQUksT0FBTyxDQUFDLE9BQU87WUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdkUsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakUsSUFBSSxPQUFPLENBQUMsTUFBTTtZQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUVwRSxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDaEMsQ0FBQzthQUFNLElBQUksZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNyRCxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUM1QixDQUFDO2FBQU0sQ0FBQztZQUNOLG9JQUFvSTtZQUNwSSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDckIsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUN4QixnQkFBZ0IsRUFDaEIsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFDeEIsV0FBVyxDQUNaLENBQUM7UUFFRixPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0NBQ0YsQ0FBQztBQUVGLGVBQWUsT0FBTyxDQUFDIn0=
@@ -1,2 +0,0 @@
1
- import { APIRoute } from "astro";
2
- export declare const GET: APIRoute;
@@ -1,6 +0,0 @@
1
- // @ts-expect-error
2
- import wixManifest from "/src/wix/index";
3
- export const GET = async ({}) => {
4
- return Response.json(wixManifest);
5
- };
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZW50cnlwb2ludHMvbWFuaWZlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsbUJBQW1CO0FBQ25CLE9BQU8sV0FBVyxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBYSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDeEMsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQyJ9
@@ -1 +0,0 @@
1
- export * from "@wix/vite-plugin-wix-manifest/extensions";
@@ -1,2 +0,0 @@
1
- export * from "@wix/vite-plugin-wix-manifest/extensions";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9leHRlbnNpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMENBQTBDLENBQUMifQ==
@@ -1,9 +0,0 @@
1
- import type { AstroConfig, ImageMetadata, RemotePattern } from "astro";
2
- export declare function isESMImportedImage(src: ImageMetadata | string): src is ImageMetadata;
3
- export declare function matchHostname(url: URL, hostname?: string, allowWildcard?: boolean): boolean;
4
- export declare function matchPort(url: URL, port?: string): boolean;
5
- export declare function matchProtocol(url: URL, protocol?: string): boolean;
6
- export declare function matchPathname(url: URL, pathname?: string, allowWildcard?: boolean): boolean;
7
- export declare function matchPattern(url: URL, remotePattern: RemotePattern): boolean;
8
- export declare function isRemoteAllowed(src: string, { domains, remotePatterns, }: Partial<Pick<AstroConfig["image"], "domains" | "remotePatterns">>): boolean;
9
- export declare function isString(path: unknown): path is string;
@@ -1,69 +0,0 @@
1
- import { isRemotePath } from "@astrojs/internal-helpers/path";
2
- export function isESMImportedImage(src) {
3
- return typeof src === "object";
4
- }
5
- export function matchHostname(url, hostname, allowWildcard) {
6
- if (!hostname) {
7
- return true;
8
- }
9
- if (!allowWildcard || !hostname.startsWith("*")) {
10
- return hostname === url.hostname;
11
- }
12
- if (hostname.startsWith("**.")) {
13
- const slicedHostname = hostname.slice(2); // ** length
14
- return (slicedHostname !== url.hostname && url.hostname.endsWith(slicedHostname));
15
- }
16
- if (hostname.startsWith("*.")) {
17
- const slicedHostname = hostname.slice(1); // * length
18
- const additionalSubdomains = url.hostname
19
- .replace(slicedHostname, "")
20
- .split(".")
21
- .filter(Boolean);
22
- return additionalSubdomains.length === 1;
23
- }
24
- return false;
25
- }
26
- export function matchPort(url, port) {
27
- return !port || port === url.port;
28
- }
29
- export function matchProtocol(url, protocol) {
30
- return !protocol || protocol === url.protocol.slice(0, -1);
31
- }
32
- export function matchPathname(url, pathname, allowWildcard) {
33
- if (!pathname) {
34
- return true;
35
- }
36
- if (!allowWildcard || !pathname.endsWith("*")) {
37
- return pathname === url.pathname;
38
- }
39
- if (pathname.endsWith("/**")) {
40
- const slicedPathname = pathname.slice(0, -2); // ** length
41
- return (slicedPathname !== url.pathname && url.pathname.startsWith(slicedPathname));
42
- }
43
- if (pathname.endsWith("/*")) {
44
- const slicedPathname = pathname.slice(0, -1); // * length
45
- const additionalPathChunks = url.pathname
46
- .replace(slicedPathname, "")
47
- .split("/")
48
- .filter(Boolean);
49
- return additionalPathChunks.length === 1;
50
- }
51
- return false;
52
- }
53
- export function matchPattern(url, remotePattern) {
54
- return (matchProtocol(url, remotePattern.protocol) &&
55
- matchHostname(url, remotePattern.hostname, true) &&
56
- matchPort(url, remotePattern.port) &&
57
- matchPathname(url, remotePattern.pathname, true));
58
- }
59
- export function isRemoteAllowed(src, { domains = [], remotePatterns = [], }) {
60
- if (!isRemotePath(src))
61
- return false;
62
- const url = new URL(src);
63
- return (domains.some((domain) => matchHostname(url, domain)) ||
64
- remotePatterns.some((remotePattern) => matchPattern(url, remotePattern)));
65
- }
66
- export function isString(path) {
67
- return typeof path === "string" || path instanceof String;
68
- }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2Fzc2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHOUQsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxHQUEyQjtJQUUzQixPQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQztBQUNqQyxDQUFDO0FBQ0QsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsR0FBUSxFQUNSLFFBQWlCLEVBQ2pCLGFBQXVCO0lBRXZCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDaEQsT0FBTyxRQUFRLEtBQUssR0FBRyxDQUFDLFFBQVEsQ0FBQztJQUNuQyxDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDL0IsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVk7UUFDdEQsT0FBTyxDQUNMLGNBQWMsS0FBSyxHQUFHLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUN6RSxDQUFDO0lBQ0osQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzlCLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXO1FBQ3JELE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDLFFBQVE7YUFDdEMsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7YUFDM0IsS0FBSyxDQUFD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