getnacelle / nacelle-js Goto Github PK
View Code? Open in Web Editor NEWNacelle-powered, JavaScript-fueled packages and example projects to elevate your composable commerce experience.
Home Page: https://nacelle.com
License: Apache License 2.0
Nacelle-powered, JavaScript-fueled packages and example projects to elevate your composable commerce experience.
Home Page: https://nacelle.com
License: Apache License 2.0
packages/shopify-cart
^1.0.0-beta.0
Yes - I've checked the existing Issues, and I'm reporting a new issue.
I'm getting successful network requests and a valid response from Nacelle showing that a value for note
has in fact been added to the cart.
Upon checkout, the note is not present within the order on Shopify โ I would expect the note to be present.
{
"id": "gid://shopify/Cart/XXXXXXXXX",
...(truncated for legibility)
"note": "Gift_Message: Test cart note",
"attributes": [],
"discountCodes": []
}
Cannot provide
v16.13.0
MacOS
No response
Open-source & TypeScript-friendly packages should distribute type declarations, source maps, and source code to offer good intellisense and debugging experiences.
@nacelle/shopify-checkout
should provide rich type information:
npm i @nacelle/[email protected]
const checkoutClient = createShopifyCheckoutClient({
storefrontCheckoutToken: "<your-storefront-api-token>",
myshopifyDomain: "<your-shop-id>",
storefrontApiVersion: "<storefront-api-version-of-choice>",
});
checkoutClient
's methods, get
and process
to replicate results in Actual Behavior.https://codesandbox.io/s/stoic-sunset-hq9jv?file=/src/index.js
Results of npx envinfo --system --binaries --browsers
:
System:
OS: macOS 11.6
CPU: (12) x64 Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
Memory: 2.15 GB / 16.00 GB
Shell: 5.8 - /bin/zsh
Binaries:
Node: 14.17.6 - ~/.nvm/versions/node/v14.17.6/bin/node
npm: 7.24.0 - ~/.nvm/versions/node/v14.17.6/bin/npm
Browsers:
Brave Browser: 93.1.29.81
Chrome: 94.0.4606.61
Firefox Developer Edition: 93.0
Safari: 15.0
packages/gatsby-source-nacelle
"@nacelle/storefront-sdk": "^2.0.0",
Yes - I've checked the existing Issues, and I'm reporting a new issue.
import { StorefrontClient } from '@nacelle/storefront-sdk';
Above import should load fine in an esm.js enabled module. We are using esm.js to support es6 modules in the node environment. That is when we are facing with the import. Without esm, it is working fine.
With esm and Storefront sdk version-1 also, everything is working fine
Getting below error during import
}}const S={missingEndpoint:"@nacelle/storefront-sdk must be initialized with a 'storefrontEndpoint'.",afterMethodInvalid:n=>T("after","only the
querymethod and data-fetching methods added by Storefront SDK plugins can be used with the
after method.",n),afterMethodCallbackIdInvalid:n=>T("after","callback IDs are expected to be strings",n),afterMethodCallbackInvalid:n=>T("after","provided callbacks are expected to be functions or null",n)},J="2.0.1",W=[429,500,502,503,504],N=Q.retryExchange({maxDelayMs:5e3,maxNumberAttempts:5,initialDelayMs:500,retryIf:n=>{if(n.networkError){const e=n.response?.status;return W.includes(e)}else return n.graphQLErrors.some(e=>e.message.includes("INTERNAL_SERVER_ERROR"))}}),P=G({preferGetForPersistedQueries:!0}),A=[N,P,l.fetchExchange];class y{#r;#e;#t;constructor(e){if(!e?.storefrontEndpoint)throw new Error(S.missingEndpoint);this.#e={exchanges:e.exchanges??A,fetchClient:e.fetchClient??globalThis.fetch,storefrontEndpoint:y.getStorefrontEndpoint(e.storefrontEndpoint,e.previewToken),previewToken:e.previewToken,locale:e.locale??"en-US"},this.#r=l.createClient({url:this.#e.storefrontEndpoint,fetch:this.#e.fetchClient,fetchOptions:{headers:y.getHeaders(e.previewToken)},exchanges:this.#e.exchanges}),this.#t={}}getConfig(){const{locale:e,previewToken:t,storefrontEndpoint:r}=this.#e;return{afterSubscriptions:this.#t,locale:e,previewToken:t,storefrontEndpoint:r}}setConfig(e){return this.#e.storefrontEndpoint=y.getStorefrontEndpoint(this.#e.storefrontEndpoint,e.previewToken),typeof e.previewToken<"u"&&(this.#e.previewToken=e.previewToken||void 0),this.#r=l.createClient({url:this.#e.storefrontEndpoint,fetch:this.#e.fetchClient,fetchOptions:{headers:y.getHeaders(e.previewToken)},exchanges:this.#e.exchanges}),{endpoint:this.#e.storefrontEndpoint,previewToken:this.#e.previewToken}}after(e,t,r){if(typeof this[e]>"u")throw new Error(S.afterMethodInvalid(e));if(typeof t>"u"||typeof t!="function"&&t!==null)throw new Error(S.afterMethodCallbackInvalid(t));if(typeof r<"u"&&typeof r!="string")throw new Error(S.afterMethodCallbackIdInvalid(r));let i=this.#t[e];typeof i>"u"&&(i=this.#t[e]={});const s=r??
${e}::${Object.values(i).length};typeof t=="function"?i[s]=t:t===null&&delete i[s]}async applyAfter(e,t){const r=this.#t[e];if(typeof r>"u")return t;let i=t;for(const s of Object.values(r))i=await s(i);return i}query({query:e,variables:t}){let r=t;try{typeof t=="string"&&(r=JSON.parse(t))}catch(i){throw new Error(
Could not parse request variables: ${i})}return this.#r.query(e,r).toPromise().then(({data:i,error:s})=>{if(s){const a=s.response?.headers?.get("x-amzn-trace-id");a&&(s.message=
${s.message}
^
SyntaxError: Invalid or unexpected token
at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
Node.js v18.16.0
try importing storfront sdk 2.0 in an esm.js package enabled module
18.16.0
Windows
}`}const S={missingEndpoint:"@nacelle/storefront-sdk must be initialized with a 'storefrontEndpoint'.",afterMethodInvalid:n=>T("after","only
the `query` method and data-fetching methods added by Storefront SDK plugins can be used with the `after` method.",n),afterMethodCallbackIdInvalid:n=>T("after","callback IDs are expected to be strings",n),afterMethodCallbackInvalid:n=>T("after","provided callbacks are expected to be functions or null",n)},J="2.0.1",W=[429,500,502,503,504],N=Q.retryExchange({maxDelayMs:5e3,maxNumberAttempts:5,initialDelayMs:500,retryIf:n=>{if(n.networkError){const e=n.response?.status;return W.includes(e)}else return n.graphQLErrors.some(e=>e.message.includes("INTERNAL_SERVER_ERROR"))}}),P=G({preferGetForPersistedQueries:!0}),A=[N,P,l.fetchExchange];class y{#r;#e;#t;constructor(e){if(!e?.storefrontEndpoint)throw new Error(S.missingEndpoint);this.#e={exchanges:e.exchanges??A,fetchClient:e.fetchClient??globalThis.fetch,storefrontEndpoint:y.getStorefrontEndpoint(e.storefrontEndpoint,e.previewToken),previewToken:e.previewToken,locale:e.locale??"en-US"},this.#r=l.createClient({url:this.#e.storefrontEndpoint,fetch:this.#e.fetchClient,fetchOptions:{headers:y.getHeaders(e.previewToken)},exchanges:this.#e.exchanges}),this.#t={}}getConfig(){const{locale:e,previewToken:t,storefrontEndpoint:r}=this.#e;return{afterSubscriptions:this.#t,locale:e,previewToken:t,storefrontEndpoint:r}}setConfig(e){return this.#e.storefrontEndpoint=y.getStorefrontEndpoint(this.#e.storefrontEndpoint,e.previewToken),typeof e.previewToken<"u"&&(this.#e.previewToken=e.previewToken||void 0),this.#r=l.createClient({url:this.#e.storefrontEndpoint,fetch:this.#e.fetchClient,fetchOptions:{headers:y.getHeaders(e.previewToken)},exchanges:this.#e.exchanges}),{endpoint:this.#e.storefrontEndpoint,previewToken:this.#e.previewToken}}after(e,t,r){if(typeof this[e]>"u")throw new Error(S.afterMethodInvalid(e));if(typeof t>"u"||typeof t!="function"&&t!==null)throw new Error(S.afterMethodCallbackInvalid(t));if(typeof r<"u"&&typeof r!="string")throw new Error(S.afterMethodCallbackIdInvalid(r));let i=this.#t[e];typeof i>"u"&&(i=this.#t[e]={});const s=r??`${e}::${Object.values(i).length}`;typeof t=="function"?i[s]=t:t===null&&delete i[s]}async applyAfter(e,t){const r=this.#t[e];if(typeof r>"u")return t;let i=t;for(const s of Object.values(r))i=await s(i);return i}query({query:e,variables:t}){let r=t;try{typeof t=="string"&&(r=JSON.parse(t))}catch(i){throw new Error(`Could not parse request variables: ${i}`)}return this.#r.query(e,r).toPromise().then(({data:i,error:s})=>{if(s){const a=s.response?.headers?.get("x-amzn-trace-id");a&&(s.message=`${s.message}
^
SyntaxError: Invalid or unexpected token
at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
Node.js v18.16.0
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
These updates are currently rate-limited. Click on a checkbox below to force their creation now.
gatsby
, gatsby-source-filesystem
)@graphql-codegen/cli
, @graphql-codegen/typed-document-node
, @graphql-codegen/typescript
, @graphql-codegen/typescript-operations
)@types/jest
, jest
, ts-jest
)react
, react-dom
)@typescript-eslint/eslint-plugin
, @typescript-eslint/parser
)These updates have been manually edited so Renovate will no longer make changes. To discard all commits and start over, click on a checkbox.
These updates have all been created already. Click a checkbox below to force a retry/rebase of any.
@graphql-codegen/cli
, @graphql-codegen/client-preset
, @graphql-codegen/typescript
, @nacelle/shopify-checkout
, @nuxt/image
, @nuxtjs/composition-api
, @nuxtjs/svg
, @sanity/ui
, @tailwindcss/forms
, @vitest/coverage-c8
, eslint-config-next
, next
, node
, npm
, passport
, prettier
, regenerator-runtime
, swr
, typescript
, vitest
)@contentful/rich-text-html-renderer
, @contentful/rich-text-types
)eslint-config-next
, next
)These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.
examples/contentful-rich-text/package.json
@contentful/rich-text-types ^15.12.1
@nacelle/storefront-sdk ^1.0.3
contentful-rich-text-vue-renderer ^2.2.0-beta.0
nuxt ^2.17.1
vue ^2.6.14
@babel/eslint-parser ^7.16.3
@nuxtjs/eslint-config ^8.0.0
@nuxtjs/eslint-module ^4.0.0
eslint ^8.4.1
eslint-plugin-nuxt ^3.1.0
eslint-plugin-vue ^8.2.0
sass ^1.49.0
sass-loader ^10.2.1
examples/flash-sale/package.json
@nacelle/storefront-sdk ^1.1.1
next 12.1.0
react 17.0.2
react-countdown ^2.3.2
react-dom 17.0.2
eslint ^8.4.1
eslint-config-next 12.1.0
examples/next-preview/package.json
@nacelle/storefront-sdk ^1.7.4
next 12.0.7
react 17.0.2
react-dom 17.0.2
eslint ^8.4.1
eslint-config-next 12.0.7
examples/nuxt-2-composition-api/package.json
@nacelle/shopify-checkout ^0.1.2
@nacelle/vue ^0.1.0
@nuxtjs/composition-api ^0.33.1
core-js ^3.19.3
isomorphic-unfetch ^3.1.0
nuxt ^2.17.1
@nuxt/image ^0.6.0
@nuxtjs/pwa ^3.3.5
fibers ^5.0.0
sass ^1.53.0
sass-loader ^10.2.0
serve ^12.0.1
examples/nuxt-3/package.json
@nacelle/shopify-checkout ^0.0.11
@nacelle/storefront-sdk ^1.5.1
fuse.js ^6.6.2
idb-keyval ^6.1.0
uuid ^8.3.2
nuxt ^3.0.0-rc.8
examples/shopify-accounts/api/package.json
axios ^1.5.1
body-parser ^1.19.0
cookie-parser ^1.4.5
countrycitystatejson ^20.8.9-a
dotenv ^16.0.0
express ^4.17.1
jsonwebtoken ^8.5.1
multipassify ^1.1.0
passport ^0.4.1
passport-facebook ^3.0.0
passport-google-oauth20 ^2.0.0
passport-jwt ^4.0.0
serverless-http ^2.3.1
winston ^3.2.1
examples/shopify-accounts/package.json
countrycitystatejson ^20.8.14
es-cookie ^1.3.2
isomorphic-unfetch ^3.1.0
js-base64 ^3.7.2
vue ^3.2.25
@vitejs/plugin-vue ^4.0.0
vite ^4.5.0
examples/svelte/package.json
@nacelle/shopify-checkout ^0.0.11
@nacelle/storefront-sdk ^1.7.1
idb-keyval ^6.1.0
uuid ^8.3.2
@sveltejs/adapter-auto ^1.0.0-next.50
eslint ^8.16.0
eslint-config-prettier ^8.3.0
eslint-plugin-svelte3 ^4.0.0
prettier ^2.6.2
prettier-plugin-svelte ^2.7.0
sass ^1.52.3
svelte ^3.44.0
svelte-preprocess ^4.10.7
examples/typedfields/package.json
@nacelle/storefront-sdk ^2.0.3
graphql ^16.8.1
next 14.0.0
react ^18
react-dom ^18
@graphql-codegen/cli 5.0.0
@graphql-codegen/client-preset 4.1.0
@types/node ^20
@types/react ^18
@types/react-dom ^18
autoprefixer ^10
eslint ^8
eslint-config-next 14.0.0
graphql-config ^5.0.3
postcss ^8
tailwindcss ^3
typescript ^5.2.2
examples/with-algolia/service/package.json
@nacelle/storefront-sdk ^1.3.1
@urql/core ^4.0.0
algoliasearch ^4.13.0
cross-fetch ^3.1.5
express ^4.17.1
graphql ^16.3.0
serverless-http ^2.7.0
@types/express ^4.17.13
@types/node ^20.8.7
serverless-offline ^8.7.0
serverless-plugin-datadog ^5.0.0
serverless-plugin-typescript ^2.1.2
typescript ^5.2.2
package.json
@changesets/cli ^2.24.0
@rushstack/eslint-patch ^1.5.1
@typescript-eslint/eslint-plugin ^6.8.0
@typescript-eslint/parser ^6.8.0
@vue/eslint-config-typescript ^12.0.0
eslint ^8.51.0
eslint-config-prettier ^9.0.0
eslint-import-resolver-alias ^1.1.2
eslint-import-resolver-typescript ^2.5.0
eslint-plugin-import ^2.24.2
eslint-plugin-jsx-a11y ^6.4.1
eslint-plugin-monorepo ^0.3.2
eslint-plugin-nuxt ^3.1.0
eslint-plugin-react ^7.25.1
eslint-plugin-react-hooks ^4.2.0
eslint-plugin-vue ^9.17.0
graphql ^15.0.0
graphql-config ^5.0.3
husky ^7.0.0
jest ^27.0.1
lerna ^4.0.0
lint-staged ^11.1.2
prettier ^3.0.3
tslib ^2.3.1
typescript ^5.2.2
node >=14.14
npm >=7
node 18.18.2
packages/gatsby-source-nacelle/package.json
@nacelle/storefront-sdk ^1.7.10
lodash.get ^4.4.2
lodash.set ^4.3.2
eslint ^8.0.0
lint-staged ^10.2.11
gatsby ^4.0.0
gatsby-source-filesystem ^4.0.0
graphql ^15.0.0
packages/sanity-plugin-nacelle-input/package.json
@sanity/base ^2.30.5
isomorphic-unfetch ^3.1.0
prop-types ^15.7.2
swr ^0.4.0
@babel/cli ^7.12.10
@babel/core ^7.12.10
@babel/preset-env ^7.12.10
@babel/preset-react ^7.12.10
@sanity/ui ^0.32.6
eslint-plugin-jsx-a11y ^6.4.1
eslint-plugin-react ^7.22.0
eslint-plugin-react-hooks ^4.2.0
husky ^4.3.8
lint-staged ^10.5.3
nodemon ^2.0.15
prettier ^2.2.1
styled-components ^5.2.1
@sanity/components ^2.0.9
@sanity/core ^2.0.9
@sanity/react-hooks ^2.0.9
@sanity/ui ^0.32.6
react ^16.9 || ^17
react-dom ^16.9 || ^17
styled-components ^5.2.1
node >=14
npm >=7
node 16.15.1
npm 8.13.1
packages/shopify-cart/package.json
@graphql-codegen/cli ^2.16.1
@graphql-codegen/typescript ^2.8.5
@graphql-codegen/typescript-operations ^2.5.10
@types/jest ^27.5.2
@typescript-eslint/eslint-plugin ^5.46.0
@typescript-eslint/parser ^5.46.0
cross-fetch ^3.1.5
eslint ^8.29.0
eslint-config-prettier ^8.3.0
eslint-plugin-import ^2.25.4
graphql ^16.3.0
jest ^27.5.1
prettier ^2.8.1
rollup-plugin-visualizer ^5.8.3
ts-jest ^27.1.5
typescript ^4.9.4
vite ^3.2.5
node >=14
npm >=7
packages/shopify-checkout/package.json
@babel/preset-typescript ^7.15.0
@types/jest ^27.0.1
cross-fetch ^3.1.4
jest ^27.0.1
rollup-plugin-transform-tagged-template ^0.0.3
rollup-plugin-visualizer ^5.5.2
ts-jest ^27.0.5
typescript 4.4.2
vite ^2.6.14
packages/storefront-sdk-plugins/commerce-queries/package.json
@graphql-codegen/cli ^5.0.0
@graphql-codegen/typed-document-node ^5.0.1
@graphql-codegen/typescript ^4.0.1
@graphql-codegen/typescript-operations ^4.0.1
@graphql-typed-document-node/core ^3.2.0
@nacelle/storefront-sdk ^2.0.3
@typescript-eslint/eslint-plugin ^5.47.0
@typescript-eslint/parser ^5.47.0
@vitest/coverage-c8 ^0.26.0
eslint ^8.30.0
eslint-config-prettier ^8.5.0
eslint-import-resolver-typescript ^3.5.2
eslint-plugin-import ^2.26.0
eslint-plugin-jest-formatting ^3.1.0
prettier 2.8.1
typescript ^4.9.3
vite ^4.0.2
vitest ^0.26.3
@nacelle/storefront-sdk ^2.0.3
node >=16.11
npm >=7
node 18.12.1
packages/storefront-sdk/package.json
@urql/core ^4.0.6
@urql/exchange-persisted ^4.0.0
@urql/exchange-retry ^1.1.0
@graphql-codegen/cli 2.16.1
@graphql-codegen/typed-document-node ^2.3.11
@graphql-codegen/typescript 2.8.5
@graphql-codegen/typescript-operations ^2.5.12
@graphql-typed-document-node/core ^3.1.1
@typescript-eslint/eslint-plugin ^5.47.0
@typescript-eslint/parser ^5.47.0
@vitest/coverage-c8 ^0.26.0
eslint ^8.30.0
eslint-config-prettier ^8.5.0
eslint-import-resolver-typescript ^3.5.2
eslint-plugin-import ^2.26.0
eslint-plugin-jest-formatting ^3.1.0
prettier 2.8.1
ts-node ^10.9.1
typescript ^4.9.3
vite ^4.0.2
vitest ^0.26.3
node >=16.11
npm >=7
node 18.12.1
packages/vue/package.json
@nacelle/client-js-sdk ^3.5.0
idb-keyval ^6.1.0
uuid ^9.0.0
vue ^2.7.14
@babel/cli ^7.15.4
@babel/core ^7.15.5
@babel/preset-env ^7.15.6
@testing-library/jest-dom ^5.14.1
@vitejs/plugin-vue2 ^2.2.0
@vue/compiler-sfc ^3.2.11
@vue/test-utils ^1.3.4
@vue/vue2-jest ^29.2.2
babel-core ^7.0.0-bridge.0
babel-jest ^29.4.1
core-js ^3.19.3
fuse.js ^6.5.3
jest ^29.4.1
jest-environment-jsdom ^29.4.1
regenerator-runtime ^0.11.1
rollup-plugin-visualizer ^5.5.2
vite ^3.2.5
vue-template-compiler ^2.7.14
reference-stores/next/package.json
@contentful/rich-text-html-renderer ^15.11.1
@nacelle/shopify-cart ^1.0.0
@nacelle/shopify-checkout ^0.1.0
@nacelle/storefront-sdk ^2.0.1
fuse.js ^6.5.3
idb-keyval ^6.1.0
next ^12.3.1
next-pwa ^5.5.2
pascal-case ^3.1.2
react ^18.2.0
react-dom ^18.2.0
react-transition-group ^4.4.2
uuid ^8.3.2
@tailwindcss/aspect-ratio ^0.4.0
@tailwindcss/forms ^0.5.0
@tailwindcss/typography ^0.5.2
autoprefixer ^10.4.2
eslint ^8.14.0
eslint-config-next ^12.1.6
eslint-config-prettier ^8.5.0
postcss ^8.4.8
prettier ^2.6.2
tailwindcss ^3.0.23
reference-stores/nuxt/package.json
@contentful/rich-text-html-renderer ^15.11.1
@nacelle/shopify-cart ^1.0.0
@nacelle/storefront-sdk ^1.0.3
core-js ^3.19.3
fuse.js ^6.5.3
idb-keyval ^6.1.0
lru-cache ^6.0.0
nuxt ^2.17.1
pascal-case ^3.1.2
uuid ^8.3.2
vue ^2.6.14
vue-server-renderer ^2.6.14
vue-template-compiler ^2.6.14
webpack ^4.46.0
@babel/eslint-parser ^7.16.3
@nuxt/image ^0.6.2
@nuxt/postcss8 ^1.1.3
@nuxtjs/eslint-config ^8.0.0
@nuxtjs/eslint-module ^4.0.0
@nuxtjs/pwa ^3.3.5
@nuxtjs/svg ^0.3.0
@tailwindcss/aspect-ratio ^0.4.0
@tailwindcss/forms ^0.4.0
@tailwindcss/typography ^0.5.0
autoprefixer ^10.4.2
eslint ^8.4.1
eslint-config-prettier ^8.3.0
eslint-plugin-nuxt ^3.1.0
eslint-plugin-vue ^8.2.0
postcss ^8.4.6
raw-loader ^4.0.2
sass ^1.49.0
sass-loader ^10.2.1
tailwindcss ^3.0.18
starters/next/package.json
@nacelle/shopify-cart ^1.0.0
@nacelle/storefront-sdk ^1.0.3
idb-keyval ^6.2.0
next ^12.3.1
react ^18.2.0
react-dom ^18.2.0
uuid ^9.0.0
eslint ^8.4.1
eslint-config-next 12.0.7
starters/nuxt/package.json
@nacelle/shopify-cart ^1.0.0
@nacelle/storefront-sdk ^1.0.3
core-js ^3.19.3
fuse.js ^6.5.3
idb-keyval ^6.1.0
nuxt ^2.17.1
uuid ^8.3.2
vue ^2.6.14
@babel/eslint-parser ^7.16.3
@nuxt/image ^0.6.0
@nuxtjs/eslint-config ^8.0.0
@nuxtjs/eslint-module ^4.0.0
@nuxtjs/pwa ^3.3.5
eslint ^8.4.1
eslint-plugin-nuxt ^3.1.0
eslint-plugin-vue ^8.2.0
sass ^1.49.0
sass-loader ^10.2.1
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.